ฉันเขียนสคริปต์เฝ้าระวังที่ตรวจสอบว่าเซิร์ฟเวอร์ VPN บนเครื่องของฉัน (ซึ่งสามารถเข้าถึงได้ทางอินเทอร์เน็ต) ทำงานอย่างถูกต้องหรือไม่ มีปัญหาแบบสุ่มหลังจากการรันระยะยาวที่ต้องรีบูต
ในลูป โฮสต์เป้าหมายจะถูก ping หลังจาก ping ไม่สำเร็จ 20 ครั้ง เครื่องจะรีบูต
ขออภัย โฮสต์ที่ใช้สำหรับ ping แก้ไขเป็น IP ที่เชื่อมโยงกับอินเทอร์เฟซ แตะ 0
. RTT ที่ต่ำกว่ามิลลิวินาทีแสดงว่าไม่มีการส่งแพ็กเก็ตผ่านอินเทอร์เน็ต ดังนั้นเส้นทางที่ฉันตรวจสอบจึงถูกบริดจ์บนเครื่องโลคัล เครื่องเชื่อมต่อกับอินเทอร์เน็ตผ่าน eth0
และสามารถ ping จากคอมพิวเตอร์เครื่องใดก็ได้ แต่เมื่อใช้ ping -I eth0 <โฮสต์>
ทั้งหมดที่ฉันได้รับคือหมดเวลา
ติดตามเส้นทาง
แสดงเส้นทางที่ถูกต้องเมื่อใช้งาน -i eth0
แต่การละทิ้งอินเทอร์เฟซส่งผลให้มีเอาต์พุตทันทีด้วยบรรทัดเดียวโดยชี้ไปที่เครื่องของฉันโดยตรง (เนื่องจากชื่อโฮสต์แก้ไขเป็นที่อยู่ IP ของ แตะ 0
).
ด้านล่างนี้เป็นสคริปต์ของฉัน (โอเค นี่อาจช่วยไม่ได้จริงๆ แต่สำหรับคนที่สนใจลองดูสิ):
#!/bin/bash
ไม่สำเร็จ=0
ในขณะที่ [ $unsuccessful -lt 20 ]; ทำ
เสียงสะท้อน -n " ->"
ping -c 1 -W 2 <addr ของเซิร์ฟเวอร์ VPN> > /dev/null
ถ้า [ $? -เน่ 0 ]; แล้ว
((ไม่สำเร็จ++))
echo "ไม่สำเร็จ: $ไม่สำเร็จ"
อื่น
ไม่สำเร็จ=0
เสียงสะท้อน -n "<-"
ไฟ
นอน10
เสร็จแล้ว
ก้อง "บาย"
รีบูต