通过telnet使用shell脚本发送login凭证和命令

我试图在一个不会给我一个正常的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允许你

  1. 通过公钥authentication进行无密码input
  2. 更容易执行远程命令
  3. 通过脚本传递返回值
  4. 一个端到端encryption的安全环境
  5. 代理身份validation,以便可以在密钥上使用密码,但密钥在使用一次后会存储在内存中。

如果您有权使用SSH,请使用它。 如果不是,请使用expect。

我点击了你的问题,以推荐期待 ,但后来看到你的限制。 对不起,但telnet不能用你想要的方式。 你有没有试过netcat或者你不能安装任何东西

而且,telnet只对可信的仅限本地的stream量是安全的; 否则使用SSH。

在使用ssh时,使用-t选项来完全避免ssh的问题?