【问题标题】:How to get the output of a telnet command from bash?如何从 bash 获取 telnet 命令的输出?
【发布时间】:2016-04-30 19:13:29
【问题描述】:

我正在尝试从 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.

我做错了什么?

【问题讨论】:

标签: linux windows bash telnet


【解决方案1】:

telnet 是出了名的难以编写脚本。如果您在命令之间添加更长的 sleep,您可能会更频繁地成功。

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 在可移植性方面,printf 绝对优于echo,无论是否带有-e,以及带有或不带有在某些方言中支持但在其他方言中不支持的转义码。使用printf,所有这些都得到了适当的标准化。
    猜你喜欢
    • 1970-01-01
    • 2021-04-16
    • 1970-01-01
    • 2011-07-15
    • 2012-09-26
    • 1970-01-01
    • 2020-03-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多