【问题标题】:How can I execute more than one command in exec command of linux expect如何在 linux expect 的 exec 命令中执行多个命令
【发布时间】:2017-02-17 10:40:02
【问题描述】:

我正在尝试通过使用 Linux 的 expect 来检测主机是否可用。

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

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

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

#!/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)

【问题讨论】:

    标签: linux bash shell networking expect


    【解决方案1】:

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

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

    请注意,如果命令成功,只会打印退出状态,因此结果将为“0”或为空。您想使用; 而不是&&

    【讨论】:

    • 非常感谢您的热情回复。对我有用。
    猜你喜欢
    • 1970-01-01
    • 2023-01-13
    • 1970-01-01
    • 2014-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多