通过 telnet 使用 shell 脚本发送登录凭据和命令

通过 telnet 使用 shell 脚本发送登录凭据和命令

我正在尝试在一个不会给我正常shell的盒子上运行几个远程命令(它是一个具有专有shell的设备)。

我还从资源有限的设备运行命令,所以我无法添加像 Expect 这样的功能。

我尝试了以下方法,但无济于事:

#!/bin/ksh
( sleep 2
  echo username
  sleep 5
  echo password
  sleep 5
  echo show whoison ) | telnet 192.168.1.10

它成功输入用户名但输入密码失败。“\n”似乎也不起作用。


我之前尝试过 SSH,但设备使用的 shell 不允许我传递命令(我尝试过 ssh user@host 'show whoison')

答案1

首先,不要这样做,这样不安全。

第二-只有当你必须这样做时......

下面的行 - 与您的类似 - 对我有用 - 但这可能是一种竞争条件,并且取决于您的设备需要凭证的速度。

( echo someLogin;  echo somePass; echo reboot 0;  echo reboot 0 ; sleep 3; ) | telnet 192.168.0.141

你也可以使用预计

答案2

对于使用 telnet 自动登录,您确实需要使用预计

笔记:说实话,你也不想使用 telnet。现在几乎每个平台都有可用的 SSH 替代方案,包括 Cisco 路由器。

SSH 允许您

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

如果您有能力使用 SSH,请使用它。如果没有,请使用 expect。

答案3

我点击了你的问题来推荐预计,但后来看到了你的限制。抱歉,但 telnet 无法按你想要的方式使用。你试过了吗网猫或者你无法安装任何事物

此外,telnet 仅对受信任的本地流量才是安全的;否则请使用 SSH。

答案4

使用 ssh 的 -t 选项是否有助于解决使用 ssh 时命令不起作用的问题?

相关内容