Expect -send 的问题:spawn id exp4 未打开

发布于 2024-08-04 05:24:01 字数 371 浏览 4 评论 0原文

我的期望代码是这样做的:它通过 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

横笛休吹塞上声 2024-08-11 05:24:01

明白为什么了。
我已经生成了 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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文