ฉันจะตรวจสอบได้อย่างไรว่า NIC อยู่ใน UNIX หรือไม่


1

ฉันกำลังเขียนสคริปต์ทุบตี (สำหรับ Nagios) และฉันต้องการที่จะตรวจสอบว่าการ์ดเครือข่ายเฉพาะนั้นมีการอัพหรือไม่

การคาดเดาที่ดีที่สุดของฉันคือการทำสิ่งนี้:

ifconfig eth0 | grep UP | wc -l

หรือ:

 ethtool eth0 | grep "Link detected: yes" | wc -l

มีวิธีการที่เชื่อถือได้ทั้งสองวิธีในการทดสอบว่าการ์ดเครือข่ายหมดหรือมีตัวเลือกที่ดีกว่าหรือไม่? บางทีอาจมีธงethtoolที่จะทำสิ่งที่ฉันต้องการได้อย่างแม่นยำ?

คำตอบ:


1

ฉันคิดว่านี่อาจเป็นวิธีที่ดีที่สุดที่จะทำ คุณอาจต้องการทำการประมวลผลที่เฉพาะเจาะจงมากขึ้นบนการ์ดเช่น grep ที่คุณแนะนำด้วย "ตรวจพบลิงก์: ใช่" ตรวจสอบให้แน่ใจว่าคุณใช้อักขระพิเศษเช่นเครื่องหมายโคลอนเพื่อให้แน่ใจว่าพบอักขระนั้นถูกต้อง นอกจากนี้คุณสามารถ grep ในส่วนที่อยู่ IP เช่น "192.168.25" สำหรับที่อยู่ IP คลาส C ภายใน สิ่งนี้จะขึ้นอยู่กับเครือข่ายภายในของคุณไม่ว่าจะเป็นอะไรก็ตาม แต่ฉันคิดว่านี่เป็นวิธีที่ดีที่สุดในการทำสิ่งนี้

อาจมีวิธีตรวจจับการเปลี่ยนแปลงจริง ๆ และทำให้เกิดเหตุการณ์บางอย่าง


2
เครือข่ายไม่ต้องใช้คลาสและโคลอนอีกต่อไปไม่จำเป็นต้องหลบหนีอีกต่อไป
เดนนิสวิลเลียมสัน

ที่คุณเขียนว่า "สำหรับที่อยู่ IP ภายในคลาส C" เนื่องจากพวกเขาไม่ได้ใช้คลาสอีกต่อไปดังนั้นควรอ่านสำหรับ / 24 ที่อยู่ IP ภายใน
barlop

2

ตรวจสอบว่าอินเทอร์เฟซขึ้น:

ip link show eth0 | grep -qs "[<,]UP[,>]"

ตรวจสอบว่ามันมีที่อยู่ IPv4 ใด ๆ ที่ได้รับมอบหมาย:

ip -4 addr show eth0 | grep -Eqs "^\s"

โดยทั่วไปgrep | wc -lควรแทนที่ด้วยgrep -cหากคุณต้องการนับการแข่งขัน

หรือgrep -qsถ้าคุณต้องการ "จับคู่ / ไม่ตรงกัน" ตามรหัสออก:if stuff | grep -qs stuff; then ... fi


1

showคำสั่งจาก iproute-3.14.0-2 มีตัวเลือกนี้:

up - แสดงเฉพาะอินเตอร์เฟสที่รันอยู่

ดังนั้นหากคุณรันip link show eth0 upและอินเตอร์เฟสหยุดทำงานเอาต์พุตจะว่างเปล่า

ในการตรวจสอบดูคำถาม"ทดสอบว่าคำสั่งส่งคืนสตริงหรือไม่มีอะไรใน bash"จาก Stack Overflow โดยทั่วไปสิ่งเช่นนี้ควรทำเคล็ดลับ:

test -n "`ip link show eth0 up`"

มันออกจากสถานะ 0 ถ้า eth0 ขึ้น


0

ฉันคิดว่าlink detected…ไม่เพียงพอ คุณควร grep สำหรับinet addrเพราะแม้ว่าลิงก์สามารถตรวจจับได้จากสวิตช์ แต่ NIC อาจไม่มีที่อยู่ IP ที่ถูกต้อง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.