如何终止 netcat 以便我的脚本可以再次循环?
How can I terminate netcat so my script can loop again?
我是 运行 一个 bash 脚本,它遍历我的远程服务器 IP 列表,通过每一行的 netcat (telnet) 连接,并运行一些命令。
问题是我似乎无法弄清楚如何终止 netcat 以便脚本可以循环到列表中的下一个 IP。
这里是相关的部分:
#!/bin/bash
while ISF= read -r line;do
(
sleep 3
printf 'command1'
sleep 3
printf 'command2'
sleep 3
) | nc $line
done < ~/servers.txt
远程服务器不发送 EOF,所以我可以 echo
或 printf
在 netcat 上终止 netcat 以便脚本可以再次循环吗?我真的不想为超时设置 -w
标志,因为我有很多服务器需要执行此操作,而超时会使它花费更长的时间。
取决于您的 netcat 版本,但 -c
应该可以满足您的需求。从 gnu netcat 的使用说明(这可能是你在 Ubuntu 上的 运行):
-c, --close close connection on EOF from stdin
指定一个超时时间,如果没有从远程端或通过标准输入接收到进一步的输入,nc
将在该超时时间后退出。
... | nc "$line" -w 10 # Choose a value for -w as appropriate
我是 运行 一个 bash 脚本,它遍历我的远程服务器 IP 列表,通过每一行的 netcat (telnet) 连接,并运行一些命令。
问题是我似乎无法弄清楚如何终止 netcat 以便脚本可以循环到列表中的下一个 IP。
这里是相关的部分:
#!/bin/bash
while ISF= read -r line;do
(
sleep 3
printf 'command1'
sleep 3
printf 'command2'
sleep 3
) | nc $line
done < ~/servers.txt
远程服务器不发送 EOF,所以我可以 echo
或 printf
在 netcat 上终止 netcat 以便脚本可以再次循环吗?我真的不想为超时设置 -w
标志,因为我有很多服务器需要执行此操作,而超时会使它花费更长的时间。
取决于您的 netcat 版本,但 -c
应该可以满足您的需求。从 gnu netcat 的使用说明(这可能是你在 Ubuntu 上的 运行):
-c, --close close connection on EOF from stdin
指定一个超时时间,如果没有从远程端或通过标准输入接收到进一步的输入,nc
将在该超时时间后退出。
... | nc "$line" -w 10 # Choose a value for -w as appropriate