ip a | grep -Eq ': eth0:.*state UP' || _do_your_thing
तो यहाँ हम grepएक सर्वव्यापी ipटूल के stdoutलिए हैं, जिसमें हमारी रुचि का इंटरफ़ेस और "स्टेट यूपी" वाक्यांश शामिल हैं (@Lekensteyn के लिए धन्यवाद, बस थोड़ा अधिक विशिष्टता की आवश्यकता को इंगित करने के लिए UP)। हम तर्क aका संक्षिप्त रूप में उपयोग करते हैं addressऔर यह सिस्टम में सभी कॉन्फ़िगर किए गए नेटवर्क कार्डों की एक सूची प्राप्त करने के लिए पर्याप्त होना चाहिए।
उपयोग करने का एक फायदा ipयह हो सकता है कि यह वास्तव में हर जगह उपलब्ध होना चाहिए - यह है कि मैं आमतौर पर अपने एंड्रॉइड फोन के नेटवर्क उपकरणों को कैसे कॉन्फ़िगर करता हूं, उदाहरण के लिए।
:colonsआंशिक मिलान से बचने के लिए उपयोग किया जाता है - इस तरह से हम के लिए एक मैच की गारंटी eth0के रूप में एक अन्यथा संभव करने का विरोध कियाsomeothereth0 या eth007।
शुक्रिया @RaphaelAhrens मुझे शुचिता की ओर ले जाने और मेरा समाधान समझाने के लिए।
संपादित करें:
वर्तमान आवश्यकताओं को संभालने के लिए आप कर सकते हैं:
ip a | sed -rn '/: '"$if"':.*state UP/{N;N;s/.*inet (\S*).*/\1/p}'
ऊपर केवल एक सीआईडीआर आईपी पते प्रिंट होगा यदि आपका लक्ष्य $ifहै उत्तर प्रदेश, प्लग इन है और एक । IPv6 के लिए समाधान केवल मामूली संशोधन के साथ सरल है।
यदि आपको पसंद नहीं है sedतो आप दूसरे के साथ भी इसी तरह के परिणाम प्राप्त कर सकते हैं |pipe ... grepऔर -Aपहले के लिए एक संदर्भ विकल्प जोड़ सकते हैं grep- लेकिन मुझे पसंद है sed।
cat /sys/class/net/ | grep eth0आपको ईजीली पार्सबल डेटा देना चाहिए। आप यह भी कर सकते हैंsudo ethtool eth0 | grep Link