ฉันจะทราบได้อย่างรวดเร็วว่าพอร์ต 80 เปิด / รับฟังบนเซิร์ฟเวอร์ผ่านสคริปต์ทุบตีหรือไม่
โดยปกติในเวิร์กสเตชันทั้งหมดที่ daemon กำลังทำงาน แต่บางครั้งก็ล้มเหลว ฉันใช้คำสั่งต่อไปนี้เพื่อตรวจสอบว่าที่อยู่ IP มีพอร์ตเปิดหรือไม่ ฉันต้องการที่จะทำเช่นนี้สำหรับทุกบรรทัดในไฟล์โดยไม่ต้องพิมพ์ด้วยตนเองทุกครั้ง
nc -zw3 10.101.0.13 80 && echo "opened" || echo "closed"
ไฟล์รายการมีลักษณะเช่นนี้ที่ไหน 3333
และ 3334
เป็นสตริงหลังจาก $ip;
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
ฉันต้องแยกพอร์ตที่เปิดจากพอร์ตที่ปิดดังนั้นฉันจะมีรายการเซิร์ฟเวอร์ที่ล้มเหลวที่จะต้องแก้ไข
ฉันลองทำสิ่งนี้ไม่สำเร็จ:
while IFS=";" read ip port ; do nc -zw3 "$ip" "$port" && echo "$ip:$port => opened" || echo "$ip:$port => closed" ; done < list.txt
while IFS=";" read ip port ; do nc -zw3 "${ip}" "${port}" && echo "${ip}:${port} => opened" || echo "${ip}:${port} => closed" ; done < list.txt
Connection to localhost 80 port [tcp/http] succeeded!
และด้วยสิ่งที่ไม่ดีภายใน 10 เสี้ยววินาทีเดียวกันฉันจะได้รับบรรทัดว่างเปล่า
nc -zw3
ในเชลล์ที่มีหนึ่งเปิดและปิดพอร์ตและดูว่ามันจะกลับมาจริง ๆ หลังจาก 3 วินาที?