我有一些代码,我用它来连接服务器并执行一些命令。代码如下:
#!/usr/bin/expect
log_file ./log_std.log
proc setPassword {oldPass newPass} {
send -- "passwd\r"
expect "* Old password:"
send -- "$oldPass\r"
expect "* New password:"
send -- "$newPass\r"
expect "* new password again:"
send -- "$newPass\r"
}
set server [lindex $argv 0]
spawn /bin/ssh perfgen@$server
# Increase buffer size to support large text responses
match_max 100000
# Conditionally expects a prompt for host authenticity
expect {
"*The authenticity of host*" {
send -- "yes\r"
}
}
我觉得非常奇怪的是,当我从命令行SSH时,SSH命令没有问题。但是,当我从shell脚本SSH时,我收到以下错误:
spawn /bin/ssh perfgen@192.168.80.132
ssh: Could not resolve hostname 192.168.80.132
: Name or service not known
相同的脚本针对3台服务器运行,但3台服务器中的2台始终出现故障。但是,如果我尝试手动登录服务器,请执行所有三台服务器的工作。
知道这里可能会发生什么吗?我完全难过了。此代码一直工作到大约2周前,根据服务器管理员的说法,服务器端配置没有任何变化。
答案 0 :(得分:0)
修剪任何空白似乎都解决了这个问题:
set serverTrimmed [string trim $server]