2017-02-17 101 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

非常感謝您的回覆。這對我有用。 –