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