Shell脚本成功telnet登录,之后如何发出命令?
Posted
技术标签:
【中文标题】Shell脚本成功telnet登录,之后如何发出命令?【英文标题】:Shell script successful telnet login, how to issue commands after that? 【发布时间】:2012-06-24 07:37:31 【问题描述】:#!/usr/bin/expect -f
spawn telnet 10.21.0.17
expect -re "login"
send "admin\n"
expect -re "Password"
send "supersecurepassword\n"
interact
按预期工作。运行脚本后,我登录到我在spawn telnet 10.21.0.17
行中使用的任何远程 IP
然后它把我丢到 AP 的外壳上
WAP->
如何发出更多命令?我想发出reboot
,然后可能是sleep 20
,最后是exit
。
我尝试过使用echo
和expect
,但没有成功。我也尝试过删除interact
,但没有成功。有什么想法吗?
【问题讨论】:
为什么不send
,就像您为用户名和密码所做的那样?我很困惑..
对不起,我也试过了。我忘了提。 echo
send
expect
和 send
什么都不做。让我留在 WAP--> 提示符处。
如下面的解决方案所示,使用了send
命令,但问题是我在第一个shell 命令之前需要一个sleep
。感谢您的快速评论,不过......总是很感激。
另外,interact
不会被使用,因为那会等待用户交互:***.com/questions/7789710/…
【参考方案1】:
只需在expect
之前添加sleep
即可解决此问题,当然还有not including interact
,以下效果很好:
#!/usr/bin/expect -f
spawn telnet 10.21.0.17
expect -re "login"
send "admin\n"
expect -re "Password"
send "supersecurepassword\n"
sleep 5
expect "WAP"
send "reboot\n"
send "exit\n"
作为参考,这用于自动重启 D-Link DAP-2590 无线接入点。既然我知道了这一点,我可能会将它用于其他事情:更改密码等。希望它在未来对其他人有所帮助。
【讨论】:
为什么在expect
之前在这个脚本中需要sleep
命令?以上是关于Shell脚本成功telnet登录,之后如何发出命令?的主要内容,如果未能解决你的问题,请参考以下文章