Kiểm tra xem cáp mạng đã được cắm mà không đưa giao diện lên chưa


9

Tôi đang cố gắng xác định các NIC trên ~ 20 máy chủ từ xa (2-6 NIC trên mỗi máy chủ). Để bắt đầu, tôi muốn xác định những cái đã sẵn sàng để sử dụng và miễn phí. Làm thế nào tôi có thể kiểm tra trạng thái của phương tiện truyền thông vật lý? Tôi biết một số cách khác nhau, bao gồm ifconfig|grep RUNNING, ethtool, cat /sys/class/net/eth0/carrier, nhưng tất cả họ yêu cầu rằng giao diện là lên. Tôi không muốn đưa TẤT CẢ giao diện lên. Không chắc chắn tại sao, nhưng tôi không muốn kích hoạt, nhưng không được cấu hình giao diện trong mạng. Có cách nào tôi có thể tránh điều này?

Hoặc tôi chỉ sai và không có gì xấu về tất cả các giao diện đang hoạt động (và không được cấu hình)? Ngay cả khi chúng được cắm vào?

Câu trả lời:


5

ip link show, theo mặc định hiển thị tất cả các giao diện, sử dụng ip link show upđể chỉ hiển thị các giao diện đang chạy. Bạn có thể sử dụng các bộ lọc để có được sự khác biệt.


Aha. Và cáp bị thiếu sẽ hiển thị là NO-CARRIER, phải không?
minaev

Chơi lô tô. Cảm ơn. Và ip addr showthậm chí thêm địa chỉ IP vào đầu ra.
minaev

2
Điều đó không hoạt động trên máy của tôi (Debian nén, trình điều khiển skge): ip link showkhông hiển thị gì nhiều hơn ngoài DOWN DOWN. ipbáo cáo thông tin giống như ifconfig/sys/class/net/trong mọi trường hợp, phải không? Bạn có nhận được thông tin trạng thái liên kết từ ipđó khác với những gì bạn nhận được dưới /sys/class/nethoặc từ ifconfigtrên máy của bạn không? Hoặc bạn có nhận được trạng thái liên kết về các giao diện không hoạt động /sys/class/net(tôi nhận được /sys/class/net/eth0/carrier: Invalid argument) không?
Gilles 'SO- ngừng trở nên xấu xa'

Nó không hoạt động nếu giao diện bị hỏng.
Vladimir Kunschikov

@Nikhil Mulley Bạn có ý nghĩa gì bởi các bộ lọc?
Joe

2

Đây là kịch bản của tôi để cập nhật các tuyến mặc định dựa trên trạng thái kết nối trong thời gian thực . (chạy trong nền) hoạt động với nhiều giao diện, tôi xác định mức độ ưu tiên trong các /tmp/${iface}.metrictệp, giao diện được kết nối 'tốt nhất' sẽ được sử dụng để định tuyến lưu lượng truy cập mặc định.

#!/bin/sh

/sbin/ip monitor link | while read -r line
do
    iface=$(echo $line | sed -ne 's/[^ ]* \([^ ]*\): .* state \([^ ]*\).*/\1/p')
    state=$(echo $line | sed -ne 's/[^ ]* \([^ ]*\): .* state \([^ ]*\).*/\2/p')
    if [ "$iface" != "" ] ; then
        echo "$iface is $state"
        if [ -f /tmp/${iface}.metric ] ; then
                echo "updating default route for ${iface}"
                if [ "$state" = "DOWN" ] ; then
                        ip route del default dev "${iface}"
                else
                        ip route add default dev "${iface}" metric `cat /tmp/${iface}.metric`
                fi
        fi
    fi
done

0

hiển thị liên kết ip hiển thị cờ "LOWER_UP" để cho biết cáp đã được cắm. Bạn cũng có thể kiểm tra / sys / class / net / eth * / operstate hoặc Carrier. Tuy nhiên, tất cả những thứ này chỉ hoạt động cho một giao diện có địa chỉ IP bị ràng buộc trên đó.


1
Thông tin thú vị, nhưng không thực sự trả lời Bài gốc.
X Tian

ngay cả khi tôi không có plugin eth, nó cũng sẽ nói "lên".
kangear
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.