1
我有一个从bash脚本调用的Expect脚本。 Expect脚本会产生一个ssh会话 并运行一个远程命令。我想在我的shell脚本中使用远程命令的返回码 。在Expect中得到远程命令的结果
# !/bin/sh
expect -f remote.exp 192.168.1.100 user pass 10.10.10.1
# here I want to analyze exit status of remotely invoked command
的期望脚本如下,这里是我的丑陋的解决方法:
#!/usr/bin/expect
set timeout 20
set box [lindex $argv 0]
set user [lindex $argv 1]
set password [lindex $argv 2]
set target [lindex $argv 3]
spawn ssh -l $user $box
expect "*password:"
send "$password\r\n"
expect "*#"
send "ping -c1 $target\r\n"
expect "*#"
send "echo $?\r"
expect {
"0\r" { puts "Test passed."; }
timeout { puts "Test failed."; }
}
expect "*#"
PS。我读过expect_out可能对我有帮助,但我没有得到它的工作。任何帮助 将不胜感激!谢谢。
+1退出SSH会话:在“'$'”很多壳的提示*年底*,并预计仍然会与它们匹配。很好,但尽管如此。发送'\ r'完全正确。 (我会配置SSH会话的RSA密钥以避免密码,但这并不总是可能的。唉。) – 2011-06-15 08:17:28
@Donal:关于RSA密钥的优点。我自己有,但正如你所说,并不总是可能的。 – 2011-06-15 19:05:53