Expect -send 的问题:spawn id exp4 未打开
我的期望代码是这样做的:它通过 ssh 连接到另一台机器,发送密码,然后返回该机器的主机名。我在下面给出了我的代码示例
#!/usr/bin/expect -f
设置 ipaddr [lrange $argv 0 0]
设置密码 [lrange $argv 1 1]
设置超时-1
生成 ssh root@$ipaddr 主机名
match_max 100000
期待“*密码:*”
发送 -- "$password\r"
期待 eof
这段代码运行多次,但间歇性地出现以下错误
发送:spawn id exp4 未打开
执行时
“发送--“$password\r””
为什么会发生这种情况?
My expect code does this: It does a ssh connect to another machine, sends the password and then returns the hostname of that machine. I give a sample of my code below
#!/usr/bin/expect -f
set ipaddr [lrange $argv 0 0]
set password [lrange $argv 1 1]
set timeout -1
spawn ssh root@$ipaddr hostname
match_max 100000
expect "*assword:*"
send -- "$password\r"
expect eof
This code runs perfectly many times but intermittently, I get the following error
send: spawn id exp4 not open
while executing
"send -- "$password\r""
Why is this happening?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
明白为什么了。
我已经生成了 ssh 密钥并将其复制到目标计算机上。所以没有出现“密码:”提示。因此,在发送完成之前,ssh 连接已关闭。
我从目标计算机中删除了 ssh 密钥并再次运行脚本,没有发现任何问题
Figured out why.
I had generated ssh keys and copied it on to the destination machine. So there was no "Password: " prompt. Hence before send could complete, the ssh connection had closed.
I deleted the ssh keys from the destination machine and ran the script again and observed no issues