我有一个unix shell脚本,用于测试文件中列出的多个主机的ftp端口.
for i in `cat ftp-hosts.txt`
do
echo "QUIT" | telnet $i 21
done
Run Code Online (Sandbox Code Playgroud)
一般来说这个脚本有效,但是如果我遇到一个没有连接的主机,即telnet是"正在尝试...",我怎样才能减少这个等待时间,以便它可以测试下一个主机?
我正在telnet主机上为给定端口(打开)运行命令,它返回 0(成功)。
为了手动尝试 telnet,我输入以下命令,然后按 control+bracket ie ^],然后按Enterkey,然后我得到telnet>提示,如果我键入closeor quit,它会返回到$提示并看到最后一个命令的退出状态显示0为(成功)因为端口 2878 已打开(根据 telnet 命令的输出)。
[vagrant@myvagrant /tmp] $ telnet `hostname` 2878
Trying 127.0.0.1...
Connected to myvagrant.
Escape character is '^]'.
^]
telnet> close
Connection closed.
[vagrant@myvagrant /tmp] $ echo $?
0
Run Code Online (Sandbox Code Playgroud)
现在,我想在没有任何人为干预的情况下运行相同的操作,即我不想手动给^]和Enter按键来telnet>提示,然后输入close(或quit)telnet 命令最终回到$提示。
为此,我尝试使用echo -e命令的选项并给出^], \n(对于换行符,即Enter键)和close命令(对于telnet>提示,以便我回到 …