2017-02-17 78 views
0

我试图通过使用Linux的期望来检测主机是否可用。如何在Linux的exec命令中执行多个命令期望

现在,我可以通过bash使用以下命令来获取返回值并检查主机状态。

#!/usr/bin/bash 
nc -z $DUT_IP 22 && echo $? 

我想通过期望来做同样的事情。但似乎我失败了。

#!/usr/bin/expect -- 
set DUT_IP "192.168.1.9" 
set result [exec nc -z $DUT_IP 22] 
send_user "$result\n\n" 

我得到了以下错误消息:

invalid port && 
     while executing 
    "exec nc -z $DUT_IP 22 && echo $?" 
     invoked from within 
    "set result [exec nc -z $DUT_IP 22 && echo $?] " 
     (file "reboot.exp" line 44) 

回答

0

使用&&分隔命令是一个shell结构,而不是指望构建。你可以明确地推出一个外壳,该命令列表:

set result [exec sh -c "nc -z $DUT_IP 22 && echo $?"] 

注意将只打印退出状态如果命令成功,从而导致要么是“0”或空。你想用;而不是&&

+0

非常感谢您的回复。这对我有用。 –