简单的 EXPECT 脚本来执行远程命令并显示输出

简单的 EXPECT 脚本来执行远程命令并显示输出

我正在尝试连接到网络路由器并show status在其上执行操作。
目前我正在使用: 它不起作用,我卡在了我尝试输入密码,但它不起作用,我得到:我在这里做错了什么......?
spawn ssh -o StrictHostKeyChecking=no [email protected]
expect " * ? password:*\r"
send -- "secretPassword\r"
sleep 5
send -- "show status\r"
sleep 10
send -- "exit\r"

[email protected]'s password:
server1:~# secretPassword
-bash: server1: command not found
server1:~#


答案1

尝试这样做

#!/usr/bin/expect -f
set timeout 120
spawn ssh -o StrictHostKeyChecking=no [email protected]
expect "*?assword:*"
send -- "secretPassword\r"
sleep 5
send -- "show status\r"
sleep 10
send -- "exit\r"
expect eof

如果您的设备响应较慢,您可能需要设置合适的超时时间。

答案2

首先,你应该考虑使用以下方法自动完成收集和跟踪路由器信息的整个过程:而不是采取一次性的解决方案。

对于这个问题,请查看自动预期自动创建您的 expect 脚本。这应该会为您提供一个可以开始使用的 expect 脚本。要修复现有脚本,请尝试使用参数运行 expect -d。这将向您准确显示 expect 想要匹配的内容,并且有望告诉您匹配表达式中存在什么错误。

相关内容