ฉันต้องการตรวจสอบว่า ethX ที่ระบุนั้นขึ้นหรือลง ฉันจะทำเช่นนั้นกับบรรทัดคำสั่งได้อย่างไร
ฉันต้องการตรวจสอบว่า ethX ที่ระบุนั้นขึ้นหรือลง ฉันจะทำเช่นนั้นกับบรรทัดคำสั่งได้อย่างไร
คำตอบ:
$ ethtool <eth?>
ตัวอย่างเช่น:
$ ethtool eth0
ให้:
Settings for eth0:
Supported ports: [ TP ]
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Supports auto-negotiation: Yes
Advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Advertised pause frame use: No
Advertised auto-negotiation: Yes
Speed: 1000Mb/s
Duplex: Full
Port: Twisted Pair
PHYAD: 1
Transceiver: internal
Auto-negotiation: on
MDI-X: on
Supports Wake-on: pumbg
Wake-on: g
Current message level: 0x00000001 (1)
Link detected: yes
ตรวจสอบ/sys/class/net/eth0/operstate
และไฟล์อื่น ๆ ในไดเรกทอรีนี้
เท่าที่ฉันรู้ว่านี่เป็นเฉพาะสำหรับ Linux 2.6+ แต่มันมีอินเตอร์เฟสที่สะอาดสำหรับเคอร์เนลไดรเวอร์
เอกสารฉบับเต็มสำหรับส่วนนี้ของsys
ระบบไฟล์มีอยู่ที่นี่:
https://www.kernel.org/doc/Documentation/ABI/testing/sysfs-class-net
ethtool [interface]
บรรทัดสุดท้ายแสดงสิ่งที่คุณต้องการ:
# ethtool eth0 การตั้งค่าสำหรับ eth0: พอร์ตที่รองรับ: [TP] โหมดลิงค์ที่รองรับ: 10baseT / Half 10baseT / Full 100baseT / ครึ่ง 100baseT / เต็ม 1000baseT / เต็ม รองรับการเจรจาต่อรองอัตโนมัติ: ใช่ โหมดลิงค์ที่โฆษณา: 10baseT / Half 10baseT / Full 100baseT / ครึ่ง 100baseT / เต็ม 1000baseT / เต็ม โฆษณาการเจรจาอัตโนมัติ: ใช่ ความเร็ว: 1000Mb / s ดูเพล็กซ์: เต็ม พอร์ต: Twisted Pair PHYAD: 0 ตัวรับส่งสัญญาณ: ภายใน เจรจาอัตโนมัติ: เปิด รองรับ Wake-on: g Wake-on: d ระดับข้อความปัจจุบัน: 0x00000037 (55) ตรวจพบลิงก์: ใช่
ip link show
เป็นอีก ดีมาก
ifconfig dev_name
หรือ
ifconfig -a
จะแจ้งให้คุณทราบหากส่วนต่อประสานนั้นเกิดขึ้น หมายเหตุ:ใช้ความระมัดระวังด้วยวิธีการเหล่านี้เนื่องจากสามารถแสดงข้อมูลล้าสมัยเกี่ยวกับสถานะของลิงค์
Link detected: no
แทนLink detected: yes
และแสดงการเชื่อมโยง IPแสดง<NO-CARRIER,BROADCAST,MULTICAST,UP>
แทน<BROADCAST,MULTICAST,UP,LOWER_UP>
แต่ifconfig -aแสดงUP BROADCAST MULTICAST MTU:1500 Metric:1
ซึ่งเป็นเช่นเดียวกับเมื่อมีการเชื่อมต่อ NIC
dmesg | grep eth
คุณควรเห็นการเปลี่ยนแปลงสถานะทั้งหมด
eth0
อุปกรณ์ของฉันแต่มันไม่ได้อยู่ในeth2
อุปกรณ์
นอกจากนี้คุณยังสามารถใช้เครื่องมือ mii เพื่อดูว่าลิงก์นั้นมีความเร็วและตรวจสอบความเร็วที่ตกลงกันหรือไม่
# mii-tool
eth0: เจรจาต่อรอง 100baseTx-FD เชื่อมโยงได้
# mii-tool eth0: negotiated 1000baseT-FD flow-control, link ok
คุณสามารถมีรายละเอียดทั้งหมดด้วยคำสั่งด้านล่าง
ethtool eth0
และถ้าคุณต้องการเห็นสถานะลิงค์คำสั่ง give ด้านล่าง
mii-tool eth0
หากระบบของคุณกำลังใช้ifplugd
(เช่นใน Raspberry Pi กับ Raspbian) คุณสามารถใช้เครื่องมือสถานะที่เกี่ยวข้องifplugstatus
เพื่อรับสถานะลิงก์ของอินเทอร์เฟซทั้งหมด:
ifplugstatus
หรืออินเทอร์เฟซเฉพาะ (เช่น eth0):
ifplugstatus eth0
netplugd เป็นบริการที่สามารถเรียกใช้โปรแกรมเมื่อเสียบสายเคเบิลหรือดึงสายเคเบิลออก ดังนั้นบรรทัดคำสั่งจะเป็น grep / var / log / messages หรือ dmesg สำหรับเอาต์พุต netplugd
หากต้องการเพิ่มคำตอบของ@ gooอย่างรวดเร็วคุณต้องตีความip link
หรือip link show INTERFACE
ดังนี้
นี่คือพอร์ตที่จัดการขึ้น แต่ลง:
2: eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN mode DEFAULT group default qlen 1000
ในคำอื่น ๆ ที่UP
คุณสามารถเห็นบ่งชี้ว่าระบบมีการกำหนดค่าให้ลองและใช้ NIC สำหรับเครือข่าย NO-CARRIER
ที่นี่จะบอกคุณว่าปัญหาการป้องกันเครือข่ายจากการทำงานคือ
นี่เป็นพอร์ตที่จัดการลง (เลเยอร์ทางกายภาพคือ 'up' โดยทางเทคนิค - เป็น VM):
3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
ในที่สุดพอร์ตนี้ทำงานได้ตามปกติ:
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq state UP mode DEFAULT group default qlen 1000
มันเป็นการดำเนินการUP
ที่LOWER_UP
บ่งบอกว่าชั้นกายภาพทำงาน (เช่นมีผู้ให้บริการ) และครั้งที่สองUP
ยืนยัน (ในผล) ชั้น IP ขึ้น