我有一个调制解调器,需要从路由器重新启动。调制解调器仅接受 telnet 并具有 Web GUI。如果我手动从路由器远程登录,我可以毫无问题地重新启动调制解调器。
但是当我尝试在路由器上发出以下命令时:
(sleep 1; echo usr; sleep 1; echo pwd; sleep 5; echo reboot; ) | telnet 192.168.0.1
它会让我登录,#
在路由器上显示提示,但它永远不会执行第三个命令。我究竟做错了什么?
出于测试目的:
- 我尝试使用
ls
重启代替 - 我尝试改变
sleep
长度 - 我尝试使用 Raspberry Pi 而不是路由器
但我永远无法让调制解调器在使用 telnet 登录后接受和/或执行任何命令。
我没有expect
可用的。我更愿意使用路由器的sh
脚本来解决它,因为它已经在那里做了几件事。
答案1
我太快了。它适用于:
(sleep 1; echo usr; sleep 1; echo pwd; sleep 1; echo ls; sleep 1; ) | telnet 192.168.0.1
答案2
您需要一个尾随时间sleep
,以便路由器有时间在会话关闭reboot
之前执行命令telnet
。我建议两秒钟,但您可能需要根据自己的情况进行调整。
尝试这个
( s(){sleep "${1:-1}";}; s; echo usr; s; echo pwd; s; echo reboot; s 2 ) | telnet 192.168.0.1