ฉันพยายามเขียนสคริปต์ที่แสดงโฮสต์ทั้งหมดใน LAN ของฉัน (มีประมาณ 20 ตัว) และเขียนสถานะ ping ถัดจากโฮสต์แต่ละตัว ฉันมีไฟล์สัญญาเช่า DHCP ดังนั้นฉันจึงมี IP ทั้งหมด (เช่น 10.0.0.1, 10.0.0.2 เป็นต้น) สิ่งที่ฉันต้องการก็คือสถานะ ping สำหรับแต่ละโฮสต์
ดังนั้นสคริปต์ของฉันเปิดตัว ping เดียวสำหรับแต่ละโฮสต์:
ping -c 1 10.0.0.1
น่าเสียดายที่เมื่อโฮสต์ออฟไลน์การ ping ใช้เวลานานในการหมดเวลา ฉันจะตรวจสอบman ping
, ดูเหมือนจะมีสองตัวเลือกการตั้งค่าความล่าช้าหมดเวลา: และ-w deadline
-W timeout
ฉันคิดว่าฉันสนใจในภายหลัง
ดังนั้นฉันจึงลองทำสิ่งนี้:
ping -c 1 -W 1 10.0.0.1
แต่การรอหนึ่งวินาทีต่อโฮสต์ออฟไลน์นั้นยาวเกินไป ฉันพยายามตั้งค่าให้ต่ำกว่าหนึ่งวินาที แต่ดูเหมือนจะไม่คำนึงถึงพารามิเตอร์ทั้งหมด:
ping -c 1 -W 0.1 10.0.0.1 # timeout option is ignored, apparently
มีวิธีตั้งค่าการหมดเวลาเป็นค่าที่ต่ำกว่าหรือไม่ ถ้าไม่มีมีทางเลือกอื่นอีกไหม?
แก้ไข
- ระบบปฏิบัติการคือ Debian Lenny
- ไพร่พลที่ฉันพยายามจะปิงเป็นจุดเชื่อมต่อจริง พวกเขาอยู่บน vlan และ subnet เดียวกันกับผู้ใช้ (เพื่อความง่ายในการปรับใช้และการแทนที่) นี่คือเหตุผลที่ฉันไม่ต้องการสแกนเครือข่ายย่อยทั้งหมด (
ping -b
เช่น)
แก้ไข # 2
ฉันยอมรับfping
วิธีแก้ไขปัญหา (ขอบคุณสำหรับคำตอบอื่น ๆ ทั้งหมด) คำสั่งนี้ทำสิ่งที่ฉันกำลังมองหา:
fping -c1 -t500 10.0.0.1 10.0.0.2 10.0.0.3 10.0.0.4
คำสั่งนี้ใช้เวลาอย่างน้อยที่สุด 500 มิลลิวินาทีในการทำให้เสร็จสมบูรณ์และให้สถานะ ping ของโฮสต์ทั้งหมดพร้อมกัน
10.0.0.1 : [0], 84 bytes, 5.71 ms (5.71 avg, 0% loss)
10.0.0.2 : [0], 84 bytes, 7.95 ms (7.95 avg, 0% loss)
10.0.0.3 : [0], 84 bytes, 16.1 ms (16.1 avg, 0% loss)
10.0.0.4 : [0], 84 bytes, 48.0 ms (48.0 avg, 0% loss)
10.0.0.1 : xmt/rcv/%loss = 1/1/0%, min/avg/max = 5.71/5.71/5.71
10.0.0.2 : xmt/rcv/%loss = 1/1/0%, min/avg/max = 7.95/7.95/7.95
10.0.0.3 : xmt/rcv/%loss = 1/1/0%, min/avg/max = 16.1/16.1/16.1
10.0.0.4 : xmt/rcv/%loss = 1/1/0%, min/avg/max = 48.0/48.0/48.0
บน Debian Lenny การติดตั้งเป็นเรื่องเล็กน้อย:
aptitude update
aptitude install fping