【发布时间】: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.
我做错了什么?
【问题讨论】:
-
尝试使用 \r 字符终止每个
echo,如下所示:`echo -e "${user}\r" -
echo 有很多可移植性问题,不应该与选项标志一起使用。请考虑使用 printf:
printf 'name: %s\n' "$name"。 wiki.bash-hackers.org/commands/builtin/echo | cfajohnson.com/shell/cus-faq.html#Q0b | in-ulm.de/~mascheck/various/echo+printf -
我建议使用
expect编写telnet 脚本。您可以在这里了解并下载它:expect.sourceforge.net 这里有一个使用它的 telnet 脚本示例:stackoverflow.com/questions/7789710/… -
@nsilent22 谢谢,就是这样 :) 你能把它作为答案发布吗?
-
@BaptisteWicht:完成。