如何从 bash 获取 telnet 命令的输出?
How to get the output of a telnet command from bash?
我正在尝试从 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.
我做错了什么?
telnet
编写脚本是出了名的棘手。如果在命令之间添加更长的 sleep
,您可能会更频繁地成功。
更好的方法是切换到可正确编写脚本的客户端,即。 netcat
(又名 nc
)。更好的方法是在您的 Windows 盒子上安装一个 SSH 服务器(也许出于安全考虑,只允许从您的网络内部访问它)并使用无密码身份验证进行设置。然后你可以简单地 ssh user@ipaddress pslist
以 \r 字符结束每个 echo
,像这样:echo -e "${user}\r"
我正在尝试从 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.
我做错了什么?
telnet
编写脚本是出了名的棘手。如果在命令之间添加更长的 sleep
,您可能会更频繁地成功。
更好的方法是切换到可正确编写脚本的客户端,即。 netcat
(又名 nc
)。更好的方法是在您的 Windows 盒子上安装一个 SSH 服务器(也许出于安全考虑,只允许从您的网络内部访问它)并使用无密码身份验证进行设置。然后你可以简单地 ssh user@ipaddress pslist
以 \r 字符结束每个 echo
,像这样:echo -e "${user}\r"