如何在 linux expect 的 exec 命令中执行多个命令
How can I execute more than one command in exec command of linux expect
我正在尝试使用 Linux 的 expect 来检测主机是否可用。
现在,我可以通过 bash 使用以下命令来获取 return 值并检查主机状态。
#!/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)
使用 &&
分隔命令是 shell 构造,而不是 expect 构造。您可以为该命令列表显式启动 shell:
set result [exec sh -c "nc -z $DUT_IP 22 && echo $?"]
请注意,只有在命令 成功 时才会打印退出状态,因此结果将为“0”或为空。您想使用 ;
而不是 &&
我正在尝试使用 Linux 的 expect 来检测主机是否可用。
现在,我可以通过 bash 使用以下命令来获取 return 值并检查主机状态。
#!/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)
使用 &&
分隔命令是 shell 构造,而不是 expect 构造。您可以为该命令列表显式启动 shell:
set result [exec sh -c "nc -z $DUT_IP 22 && echo $?"]
请注意,只有在命令 成功 时才会打印退出状态,因此结果将为“0”或为空。您想使用 ;
而不是 &&