Tcl Expect无法将SSH生成到服务器,但SSH从命令行工作

时间:2014-02-07 21:18:09

标签: ssh tcl expect

我有一些代码,我用它来连接服务器并执行一些命令。代码如下:

#!/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周前,根据服务器管理员的说法,服务器端配置没有任何变化。

1 个答案:

答案 0 :(得分:0)

修剪任何空白似乎都解决了这个问题:

set serverTrimmed [string trim $server]