文本文件中有一个主机和端口列表,格式如下
host1 10000
host2 20000
我希望并行执行nc
以检查端口连接。
我尝试了以下命令
cat host-port.txt | xargs -n 1 -I ^ -P 5 nc -w 1 -zv ^ |& grep -v succeeded`
但是nc
命令失败,并显示如下的帮助消息
这是来自netcat-openbsd包的nc。另一种可用的nc 在netcat-traditional包中。 用法:nc [-46DdhklnrStUuvzC] [-i interval] [-P proxy_username] [-p source_port] [-s source_ip_address] [-T ToS] [-w timeout] [-X proxy_protocol] [-x proxy_address [:port]] [hostname] [port [s]]`
如果我从文件中复制字符串并执行它,它可以正常工作。不确定当xargs
提取行(“主机端口”)并将其传递给nc
答案 0 :(得分:1)
尝试一下:
cat hosts.txt| xargs -n 2 sh -c 'nc -w 1 -zv $1 $2' argv0
此脚本
#!/bin/bash
input=hosts.txt
while IFS=' ' read -r host port
do
echo ${host} ${port}
# nc -w 1 -zv ${host} ${port}
done < "$input"
只需将您的echo ${host} ${port}
选项
nc
行