仅当端口范围内的所有端口都成功时,是否可以强制 netcat 成功?

仅当端口范围内的所有端口都成功时,是否可以强制 netcat 成功?

我将其用作验证脚本的一部分,并根据预期输出nc检查列出的每个命令的输出。nc

例如,

nc -zvw1 serv1.host.com 443 | gawk '{print $7}' Expected output: succeeded!

我面临的问题是,如果我想检查一系列端口,虽然某些测试实际上可能会返回succeeded!,但不能保证全部端口照此返回。这对我来说是一个问题,因为我是根据列出命令和预期输出的配置文件进行比较cmd:output1:1

而不是列出类似的内容:

nc -zvw1 serv1.host.com 443 | gawk '{print $7}' nc -zvw1 serv1.host.com 444 | gawk '{print $7}' nc -zvw1 serv1.host.com 445 | gawk '{print $7}'

Expected result: succeeded! Expected result: succeeded! Expected result: succeeded!

我希望能够强制nc失败,如果任何范围内的端口出现故障;所以在这种情况下我的配置可以简化为:

nc -zvw1 serv1.host.com 443-445 | gawk '{print $7}' Expected result: succeeded!

不幸的是,这是对一个简单问题的冗长描述。道歉。

答案1

这可能会起作用:

seq 443 445 \
| xargs -n1 sh -c 'nc -zvw1 serv1.host.com $0 >/dev/null 2>&1 || (echo error! && exit 255)' 2>/dev/null \
&& echo succeeded!

它基本上使用 和 模拟端口范围seqxargs并利用nc的返回值来echo error!设置exit 255中止xargsecho succeeded!成功连接到每个给定端口号时。

相关内容