我试图在一个不会给我一个正常的shell(这是一个拥有专有shell的设备)的框上运行几个远程命令。
我也从一个有限的资源设置的设备运行的命令,所以我不能添加像Expect的东西。
我尝试了以下无济于事:
#!/bin/ksh ( sleep 2 echo username sleep 5 echo password sleep 5 echo show whoison ) | telnet 192.168.1.10
它成功input用户名,input密码失败。 “\ n”似乎也没有工作。
我以前试过SSH,但设备使用的shell不会让我传递命令(我试过用户@主机'显示whoison')
第一。 不要。 这是不安全的。
第二 – 只有当你必须…
下面的代码类似于你的代码适用于我 – 但可能这是一个竞争条件,取决于你的设备期望凭证的速度。
( echo someLogin; echo somePass; echo reboot 0; echo reboot 0 ; sleep 3; ) | telnet 192.168.0.141
你也可以使用期望
对于使用telnet自动login,你真的想用expect
注意:真的,真的,你不想使用telnet。 现在几乎所有的平台都可以使用SSH替代scheme,包括思科路由器。
SSH允许你
如果您有权使用SSH,请使用它。 如果不是,请使用expect。
我点击了你的问题,以推荐期待 ,但后来看到你的限制。 对不起,但telnet不能用你想要的方式。 你有没有试过netcat或者你不能安装任何东西 ?
而且,telnet只对可信的仅限本地的stream量是安全的; 否则使用SSH。
在使用ssh时,使用-t选项来完全避免ssh的问题?