快速查找端口是否在使用Linux的所有本地网络中打开的方法

时间:2014-01-29 05:13:30

标签: linux bash networking sysadmin system-administration

从bash脚本中,如何快速查明端口80是否在服务器上打开/侦听。

在所有工作站上打开守护进程,但有时它会掉线,如果端口打开我怎样才能检查文件中的所有文件,我找到了一种使用方法

 nc -zw3 10.101.0.13 80 && echo "opened" || echo "closed"

但是如何从文件批量使用它,我的写文件看起来像:

10.101.0.13; 3333
10.101.0.15; 3334
10.101.0.17; 4143
10.101.0.21; 1445
10.101.0.27; 2443
10.101.0.31; 2445
10.101.0.47; 3443
10.101.0.61; 3445

我必须将工作与非工作分开,但也要与所有线路分开。谢谢

2 个答案:

答案 0 :(得分:2)

您可以使用此bash一个班轮,

while IFS=";" read ip port; do nc -zw3 "$ip" "$port" && echo "$ip:$port => opened" || echo "$ip:$port =>  closed"; done<'ip_list_file.txt'

修改

试试这个:

while IFS=";" read ip port; do nc -zw3 "${ip}" "${port}" && echo "${ip}:${port} => opened" || echo "${ip}:${port} =>  closed"; done<'ip_list'

答案 1 :(得分:1)

  

我必须将工作与非工作分开,但也要与所有工作分开   线。

您可以循环浏览文件,并将状态写入相应的文本文件

sed 's/;/ /' file | while read ip other
do
        nc -zw3 $ip 80 && echo "$line" >> opened.txt || echo "$line" >> closed.txt
done

如果您想保留IP; otherstuff格式,可以使用此格式

while read line
do
        ip=$(sed 's/;.*//' <<<"$line")
        nc -zw3 $ip 80 && echo "$line" >> opened.txt || echo "$line" >> closed.txt
done < file