如何在linux expect的exec命令中执行多个命令

时间:2017-02-17 10:40:02

标签: linux bash shell networking expect

我试图通过使用Linux的预期来检测主机。

现在,我可以通过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)

1 个答案:

答案 0 :(得分:0)

使用&&分隔命令是shell构造,而不是expect构造。您可以为该命令列表显式启动shell:

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

请注意,如果命令成功,则仅打印退出状态,因此结果将为" 0"或空的。您想使用;代替&&