我的期望代码是这样做的:它通过 ssh 连接到另一台机器,发送密码,然后返回该机器的主机名。我在下面给出了我的代码示例
#!/usr/bin/expect -f
设置 ipaddr [lrange $argv 0 0]
设置密码 [lrange $argv 1 1]
设置超时-1
生成 ssh root@$ipaddr 主机名
match_max 100000
期待“*assword:*”
发送 -- "$password\r"
期待 eof
这段代码完美地运行了很多次,但间歇性地,我收到以下错误
发送:spawn id exp4 未打开
执行时
"发送 -- "$密码\r""
为什么会这样?
最佳答案
想通了为什么。
我已经生成了 ssh key 并将其复制到目标机器上。所以没有“密码:”提示。因此,在发送完成之前,ssh 连接已经关闭。
我从目标机器上删除了 ssh key 并再次运行脚本并观察到没有问题
关于unix - 问题与expect -send : spawn id exp4 not open,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1387848/