जाँच करें कि क्या नेटवर्क केबल को इंटरफ़ेस में लाए बिना प्लग किया गया है


9

मैं ~ 20 रिमोट सर्वर (प्रत्येक सर्वर पर 2-6 एनआईसी) पर एनआईसी की पहचान करने की कोशिश कर रहा हूं। के साथ शुरू करने के लिए, मैं उपयोग के लिए तैयार लोगों की पहचान करना चाहता हूं और उन्हें मुक्त करना चाहता हूं। मैं भौतिक मीडिया की स्थिति की जांच कैसे कर सकता हूं? मैं सहित कुछ मायनों, पता ifconfig|grep RUNNING, ethtool, cat /sys/class/net/eth0/carrier, लेकिन सभी वे अपेक्षा करते हैं कि इंटरफ़ेस निर्भर है। मैं सभी इंटरफेस नहीं लाना चाहता। निश्चित नहीं है कि क्यों, लेकिन मुझे सक्षम होना पसंद नहीं है, लेकिन नेटवर्क में कॉन्फ़िगर किए गए इंटरफेस नहीं हैं। क्या कोई रास्ता है जिससे मैं इससे बच सकता हूँ?

या मैं सिर्फ गलत हूं और सभी इंटरफेस के ऊपर (और कॉन्फ़िगर नहीं) होने के बारे में कुछ भी बुरा नहीं है? भले ही उन्हें प्लग इन किया गया हो?

जवाबों:


5

ip link show, डिफ़ॉल्ट रूप से सभी इंटरफेस ip link show upदिखाता है, केवल चल रहे इंटरफेस को दिखाने के लिए उपयोग करें। आप अंतर पाने के लिए फ़िल्टर का उपयोग कर सकते हैं।


अहा। और गायब केबल NO-CARRIER के रूप में दिखाई देगा, है ना?
मनिएव

बिंगो। धन्यवाद। और ip addr showयहां तक ​​कि आउटपुट के लिए आईपी पते भी जोड़ता है।
मिन्नेव

2
वह मेरी मशीन पर काम नहीं करता है (डेबियन निचोड़, स्केज ड्राइवर): ip link show"नीचे" से ज्यादा कुछ नहीं दिखाता है। ipके रूप में ifconfigऔर /sys/class/net/किसी भी मामले में एक ही जानकारी रिपोर्ट करता है, है ना? क्या आपको ipउस लिंक की स्थिति की जानकारी मिलती है जो आपके मशीन पर /sys/class/netया उसके नीचे से अलग है ifconfig? या क्या आप उन इंटरफेस के बारे में लिंक स्टेटस प्राप्त करते हैं जो नीचे हैं /sys/class/net(मुझे मिलता है /sys/class/net/eth0/carrier: Invalid argument)?
गिल्स एसओ- बुराई को रोकना '

यदि इंटरफ़ेस डाउन है तो यह काम नहीं करता है।
व्लादिमीर कुनसिकिकोव

@ निखिल मुल्ले आपको फिल्टर से क्या मतलब है?
जो

2

यहाँ वास्तविक समय में कनेक्शन की स्थिति के आधार पर डिफ़ॉल्ट मार्गों को अद्यतन करने के लिए मेरी स्क्रिप्ट है । (पृष्ठभूमि में चलता है) कई इंटरफेस के साथ काम करता है, मैं /tmp/${iface}.metricफाइलों में प्राथमिकताओं को परिभाषित करता हूं, डिफ़ॉल्ट ट्रैफ़िक को रूट करने के लिए 'सर्वश्रेष्ठ' कनेक्टेड इंटरफ़ेस का उपयोग किया जाएगा।

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

आईपी ​​लिंक शो, प्लग "LOWER_UP" को प्रदर्शित करता है ताकि केबल को प्लग किया जा सके। आप / sys / class / net / eth * / operstate या वाहक के लिए भी जाँच कर सकते हैं। हालाँकि, ये सभी केवल एक इंटरफेस के लिए काम करते हैं, जिसके साथ एक आईपी एड्रेस होता है।


1
दिलचस्प जानकारी, लेकिन वास्तव में मूल पोस्ट का जवाब नहीं है।
एक्स तियान

यहां तक ​​कि अगर मैं एथ को प्लगइन नहीं करता हूं, तो यह "अप" भी कहेगा।
कंगियर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.