我将其用作验证脚本的一部分,并根据预期输出nc
检查列出的每个命令的输出。nc
例如,
nc -zvw1 serv1.host.com 443 | gawk '{print $7}' Expected output: succeeded!
我面临的问题是,如果我想检查一系列端口,虽然某些测试实际上可能会返回succeeded!
,但不能保证全部端口照此返回。这对我来说是一个问题,因为我是根据列出命令和预期输出的配置文件进行比较cmd:output
的1: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!
它基本上使用 和 模拟端口范围seq
,xargs
并利用nc
的返回值来echo error!
设置exit 255
中止xargs
或echo succeeded!
成功连接到每个给定端口号时。