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

时间:2016-01-24 13:23:56

标签: linux windows bash telnet

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

这是bash脚本(减去变量):

( 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.

我做错了什么?

2 个答案:

答案 0 :(得分:3)

telnet编写脚本非常棘手。如果在命令之间添加更长的静止sleep,则可以更频繁地成功。

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

答案 1 :(得分:2)

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