如何终止netcat以便我的脚本可以再次循环?

时间:2016-12-09 13:33:56

标签: bash ubuntu-14.04 terminate netcat

我正在运行一个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,因此我可以在netcat上echoprintf终止netcat以便脚本可以再次循环吗?我真的不想为超时做一个-w标志,因为我需要做很多服务器才能执行此操作,并且超时会使它花费更长的时间。

2 个答案:

答案 0 :(得分:4)

指定一个超时,如果从远程端或通过标准输入没有接收到其他输入,nc将退出。

... | nc "$line" -w 10   # Choose a value for -w as appropriate

答案 1 :(得分:1)

取决于您的netcat版本,但if (System.Text.RegularExpressions.Regex.IsMatch(txt.Text, @"[a-zA-Z]") && System.Text.RegularExpressions.Regex.IsMatch(txt.Text, @"[0-9]") { // Success - It is alphanumric } else { // Error - It is not alphanumric } 应该按照您的要求进行操作。从gnu netcat的使用声明(这可能是你在Ubuntu上运行的):

-c