Ağ kablosunun arabirimi açmadan takılıp takılmadığını kontrol edin


9

Ben ~ 20 uzak sunucularda NICs tanımlamak için çalışıyorum (her sunucuda 2-6 NIC). Öncelikle, kullanıma hazır ve özgür olanları tanımlamak istiyorum. Fiziksel medyanın durumunu nasıl kontrol edebilirim? Ben de dahil olmak üzere bazı yollar, biliyorum ifconfig|grep RUNNING, ethtool, cat /sys/class/net/eth0/carrier, ancak tüm bunlar arayüzü kadar gerektirmektedir. TÜM arayüzleri yükseltmek istemiyorum. Neden olduğundan emin değilim, ancak ağda etkinleştirilmiş, ancak yapılandırılmış arayüzleri etkinleştirmek istemiyorum. Bundan kaçınmamın bir yolu var mı?

Yoksa sadece yanlış mıyım ve tüm arayüzlerin yukarı (ve yapılandırılmamış) olmasının kötü bir yanı yok mu? Takılsalar bile?

Yanıtlar:


5

ip link show, varsayılan olarak tüm arabirimleri gösterir, ip link show upyalnızca çalışan arabirimleri göstermek için kullanın . Farkı elde etmek için filtreleri kullanabilirsiniz.


Aha. Ve eksik kablo NO-CARRIER olarak görünecek, değil mi?
minaev

Bingo. Teşekkürler. Ve ip addr showhatta çıkışa IP adresleri ekler.
minaev

2
Bu benim makinemde çalışmıyor (Debian sıkmak, skge sürücüsü): ip link show“DOWN” dan başka bir şey göstermiyor. ipaynı bilgileri bildirir ifconfigve /sys/class/net/o, her durumda değildir? Bağlantı durumu bilgilerini , makinenizde aldığınız veya makinenizden ipaldığınızdan farklı olarak alıyor musunuz? Yoksa (aldım ) kapalı arayüzler hakkında bağlantı durumu alıyor musunuz? /sys/class/netifconfig/sys/class/net/sys/class/net/eth0/carrier: Invalid argument
Gilles 'SO- kötü olmayı bırak'

arayüz çalışmıyorsa çalışmaz.
Vladimir Kunschikov

@Nikhil Mulley Filtrelerle ne demek istiyorsun?
Joe

2

İşte gerçek zamanlı olarak bağlantının durumuna göre varsayılan yolları güncellemek için benim komut dosyası . (arka planda çalışır) birden fazla arayüzle çalışır, /tmp/${iface}.metricdosyalarda öncelikleri tanımlar , varsayılan trafiği yönlendirmek için 'en iyi' bağlı arayüz kullanılır.

#!/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

ip link show, kablonun takılı olduğunu belirtmek için "LOWER_UP" bayrağını görüntüler. Ayrıca / sys / class / net / eth * / operstate veya operatörünü de kontrol edebilirsiniz. Ancak, bunların tümü yalnızca IP adresine bağlı bir arabirim için çalışır.


1
İlginç bilgiler, ancak Orijinal Gönderiye gerçekten cevap vermiyor.
X Tian

eth eklentisi olmasam bile "yukarı" diyecektir.
kangear
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.