从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
我必须将工作与非工作分开,但也要与所有线路分开。谢谢
答案 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