xargs执行nc来检查端口

时间:2017-10-03 07:13:04

标签: linux bash shell

文本文件中有一个主机和端口列表,格式如下

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

时会发生什么

1 个答案:

答案 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