कुछ जवाब नए प्रयोग कर रहे हैं ip
आदेश (के लिए प्रतिस्थापन ifconfig
) इसलिए यहाँ एक है कि का उपयोग करता है ip addr
, grep
और awk
बस के साथ जुड़े IPv4 पता मुद्रित करने के लिए wlan0
इंटरफ़ेस:
ip addr show wlan0|grep inet|grep -v inet6|awk '{print $2}'|awk '{split($0,a,"/"); print a[1]}'
हालांकि सबसे कॉम्पैक्ट या फैंसी समाधान नहीं है, यह (यकीनन) आसान है (नीचे स्पष्टीकरण देखें) और अन्य उद्देश्यों के लिए संशोधित करें, जैसे मैक पते के अंतिम 3 ओकटेट को इस तरह प्राप्त करना:
ip addr show wlan0|grep link/ether|awk '{print $2}'|awk '{split($0,mac,":"); print mac[4] mac[5] mac[6]}'
स्पष्टीकरण: ip addr show wlan0
नाम के नेटवर्क इंटरफ़ेस से जुड़ी जानकारी को आउटपुट करता है wlan0
, जो इस तरह होना चाहिए:
4: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether dc:a6:32:04:06:ab brd ff:ff:ff:ff:ff:ff
inet 172.18.18.1/24 brd 172.18.18.255 scope global noprefixroute wlan0
valid_lft forever preferred_lft forever
inet6 fe80::d340:5e4b:78e0:90f/64 scope link
valid_lft forever preferred_lft forever
अगला grep inet
उन पंक्तियों को फ़िल्टर करता है जिनमें "inet" (IPv4 और IPv6 कॉन्फ़िगरेशन) शामिल नहीं हैं और "inet6" grep -v inet6
वाली शेष पंक्तियों को फ़िल्टर करता है, जिसके परिणामस्वरूप यह एकल पंक्ति होती है:
inet 172.18.18.1/24 brd 172.18.18.255 scope global noprefixroute wlan0
अंत में, पहला awk
"172.18.18.1/24" फ़ील्ड निकालें और दूसरा नेटवर्क मास्क शॉर्टहैंड को हटा देता है, केवल आईपीवी 4 पते को छोड़कर।
इसके अलावा, मुझे लगता है कि यह उल्लेखनीय है कि यदि आप स्क्रिप्टिंग कर रहे हैं तो इस जानकारी को प्राप्त करने के लिए अक्सर कई समृद्ध और / या अधिक मजबूत उपकरण होते हैं, जिन्हें आप इसके बजाय उपयोग करना चाहते हैं। उदाहरण के लिए, यदि Node.js का उपयोग कर रहे हैं ipaddr-linux
, अगर रूबी का उपयोग कर रहे हैं linux-ip-parser
, आदि।
Https://unix.stackexchange.com/questions/119269/how-to-get-ip-address-using-shell-script भी देखें