如何从bash获取telnet命令的输出?

我试图从Linux上获取在我的Windows机器上运行的进程列表,但是当我在脚本中执行时没有得到任何输出。 如果我手动使用telnet并使用命令pslist,我将获得完整的进程列表,但不能在我的脚本中。

这里是bash脚本(减去variables):

( echo open ${host} sleep 1 echo ${user} sleep 3 echo ${pass} sleep 1 echo pslist sleep 2 ) | telnet 

我只是用bash pslist.sh来调用它,输出结果如下所示:

 telnet> Trying ip_address... Connected to ip_address. Escape character is '^]'. Welcome to Microsoft Telnet Service login: my_loginmy_passwordpslistConnection closed by foreign host. 

我究竟做错了什么 ?

用\ r字符终止每个echo ,如下所示: echo -e "${user}\r"

telnet脚本是非常棘手的。 如果在命令之间添加更长时间的sleep ,则可能会更经常地成功。

更好的方法是切换到一个正确的脚本客户端,即。 netcat (又名nc )。 更好的办法是在你的Windows机器上安装一个SSH服务器(可能只是为了安全,只能从网络内部访问),然后用无密码的身份验证进行设置。 那么你可以简单地使用ssh user@ipaddress pslist