cat hosts.txt | while read h; do telnet $h; done
当我运行这一点,Telnet方式登录到该拒绝连接第一台主机,但随后退出的循环,而不是在文件中的其他主机,然后退出。 为什么在第一台主机后退出循环,我该如何解决?循环第一次迭代
谢谢。
cat hosts.txt | while read h; do telnet $h; done
当我运行这一点,Telnet方式登录到该拒绝连接第一台主机,但随后退出的循环,而不是在文件中的其他主机,然后退出。 为什么在第一台主机后退出循环,我该如何解决?循环第一次迭代
谢谢。
telnet是交互式的。你究竟想要做什么?如果你想自动“远程登录”会话,你可以在我的bash
使用SSH
while read -r host
do
ssh <options> <commands> "$host"
done <"hosts.txt"
这工作得很好:
$ cat hosts.txt
machine1
machine3
$ cat hosts.txt | while read h; do telnet $h; done
Trying 9.190.123.47...
telnet: Unable to connect to remote host: Connection refused
Trying 9.190.123.61...
telnet: Unable to connect to remote host: Connection refused
然而,当我连接到一台机器不拒绝连接,我得到:
$ cat hosts.txt
machine2
machine1
machine3
$ cat hosts.txt | while read h; do telnet $h; done
Trying 9.190.123.48...
Connected to machine2.
Escape character is '^]'.
Connection closed by foreign host.
那是因为我确实连接成功和所有其他主机名正在发送到telnet
会话。这些无疑用于尝试登录,其余主机名作为用户/密码无效,因此会话正在关闭。
如果你只是想以交互方式登录到每个系统,你可以使用:
for h in $(cat hosts.txt); do telnet $h 1023; done
不会捕捉到的主机名,其余部分进入第一会议取得圆满成功。
rsh(远程shell)有一个不安全的历史。我会推荐ssh。 – ghostdog74 2010-01-19 06:37:23
如前所述,telnet是一个需要输入的交互式程序。
猜测第一个telnet之后,第一个之后的所有主机都将被用作输入。
目前尚不清楚您的脚本正在尝试做什么。也许你需要更清楚你想要做什么。
剧本还有什么?特别是,它里面有“set -e”吗? – 2010-01-19 05:43:53