जवाबों:
एक-लाइनर्स:
nm-tool | grep -i gateway | xargs echo | cut -d' ' -f2
nm-tool | grep -i gateway | awk '{print $2}
netstat -nr | awk '$1 == "0.0.0.0"{print$2}'
arp -n | awk '{print $1}'
नोट: केवल तभी काम करता है जब आपकी मशीन नेटवर्क पर एकमात्र होip route show | grep -i 'default via'| awk '{print $3 }'
आउटपुट: 192.168.0.1
मेरे लिए
नोट :
15.04 और बाद के लिए, नहीं है nm-tool
, इसलिए उपयोग करें nmcli dev show <IFACE>
। उदाहरण के लिए,
$ nmcli dev show wlan7 | grep GATEWAY
IP4.GATEWAY: 192.168.0.1
IP6.GATEWAY:
संपादन और अतिरिक्त जानकारी
जैसा कि आप कमांड की जांच से देख सकते हैं, हम आउटपुट लेते हैं nm-tool
(जो, ध्यान दें, NetworkManager से जानकारी लेता है), शब्द युक्त लाइन ढूंढें gateway
, इको के साथ जानकारी की तुलना में प्रिंट करें (रिक्त स्थान से अलग), और फिर उस पूरे के केवल दूसरे आइटम को काट लें। उत्पादन। ध्यान दें, यदि आपके पास दो या अधिक कनेक्शन हैं, तो आपको शीर्ष हटाने वाले xargs echo | cut -d' ' -f2
हिस्से की आवश्यकता हो सकती है , और इसे बदल सकते हैं awk '{print $2}'
; दूसरे शब्दों में पूरी लाइन इस तरह दिखेगी nm-tool | grep -i gateway | awk '{print $2}'
। वैकल्पिक रूप से आप nm-tool | grep -oP '(?i)gateway:\s*\K\S+'
अविनाश राज द्वारा प्रस्तावित टिप्पणियों के रूप में इस्तेमाल कर सकते थे । जैसा कि आप देख सकते हैं कि यहां कुछ खास नहीं किया गया है, और यहां का संपूर्ण कार्य केवल आउटपुट एडिटिंग टूल्स जैसे कट, ऑक और ग्रीप का उपयोग करने में एक अभ्यास है।
गेटवे की जानकारी प्राप्त करने का एक और तरीका है nmcli dev list
(हाँ, अभी भी नेटवर्क प्रबंधक पर निर्भर है) कमांड। nmcli
नेटवर्क मैनेजर का कमांड लाइन संस्करण है। आप दौड़ सकते थे nmcli dev list | grep -i routers
या आप दौड़ सकते थे nmcli dev list | grep -i 'gw ='
। यदि आप चाहते थे, तो आप वांछित आईपी पते को छोड़कर अन्य सभी जानकारी को काटने में व्यायाम कर सकते थे।
चूंकि मूल प्रश्न में एकमात्र विनिर्देश केवल डिफ़ॉल्ट गेटवे को प्रिंट करना था, इसलिए मैं एनएम-टूल के आउटपुट पर भरोसा कर रहा हूं। NetworkManager डिफ़ॉल्ट रूप से Ubuntu के साथ आता है, यह Ubuntu के नेटवर्क कनेक्शन को प्रबंधित करने का मानक तरीका है। यदि आप किसी अन्य चीज़ का उपयोग करते हैं, जैसे wicd या wpa_cli के माध्यम से कनेक्ट करते हैं, तो nm-tool आपको उत्तर नहीं देगा। ऐसे मामले में आप अन्य लोगों के उत्तरों को अधिक उपयोगी समझ सकते हैं।
एक अधिक डिस्ट्रो-न्यूट्रल और कॉन्फिग-न्यूट्रल विकल्प का उपयोग करना होगा netstat -n
, जो कर्नेल राउटिंग टेबल का उपयोग करता है, जिसके समान route -n
। यह आउटपुट है, कुछ भी आश्चर्यजनक नहीं है।
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.0.1 0.0.0.0 UG 0 0 0 wlan0
192.168.0.0 0.0.0.0 255.255.255.0 U 9 0 0 wlan0
और यहाँ आपकी वांछित जानकारी को काटने का तरीका है: netstat -nr | awk '$1 == "0.0.0.0"{print$2}'
एक और, तटस्थ भी: arp -n | awk '{print $1}'
eth0
और wlan0
दोनों सक्रिय रूप से जुड़े हुए हैं, लेकिन केवल प्रवेश द्वार पर कॉन्फ़िगर किए गए गेटवे के साथ wlan0
, nm-tool | grep -i gateway | xargs echo | cut -d' ' -f2
आउटपुट केवल 0.0.0.0
। nm-tool | grep -oP '(?i)gateway:\s*\K\S+'
दो लाइनों को आउटपुट करता है: 0.0.0.0
इसके बाद 192.168.1.1
। ( ip route ...
और route -n ...
तरीके सिर्फ उत्पादन करते हैं 192.168.1.1
, जिसे मैं सबसे वांछनीय परिणाम
network-manager
द्वारा जैसे ifupdown
या ifconfig
उन मामलों ..in nm-tool
संक्षेप इस जवाब पूरी तरह से नेटवर्क द्वारा प्रबंधित किया जा रहा पर निर्भर करता है output..in वांछित उत्पन्न नहीं होगा network-manager
..
आप इसे कई तरह से पा सकते हैं
ip route show default
एक बेहतर सवाल, आप आउटपुट को क्या आकार देना चाहते हैं?
ip route show | awk '/default/ {print $3}'
tracepath -m 1 8.8.8.8 | awk '/1:/ {print $2}' | uniq
टिप्पणियों से - (शुक्रिया अविनाश राज ०
tracepath -m 1 8.8.8.8 | awk '/1:/ {print $2;exit}'
uniq
सिर्फ tracepath -m 1 8.8.8.8 | awk '/1:/ {print $2;exit}'
5in होगा के लिए ओ करने की जरूरत नहीं है ।
जैसा कि आप आमतौर पर उपयोग करते हैं route -n
, आप इस sed
समाधान के साथ मिलकर कोशिश कर सकते हैं route -n
:
route -n | sed -nr 's/(0\.0\.0\.0) +([^ ]+) +\1.*/\2/p'
यहाँ एक परीक्षण है:
$ route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 eth0
192.168.0.0 0.0.0.0 255.255.240.0 U 0 0 0 eth0
$ route -n | sed -nr 's/(0\.0\.0\.0) +([^ ]+) +\1.*/\2/p'
192.168.1.1
उपयोग करने का एक और तरीका होगा grep
:
$ route -n | tr -s ' ' | grep -Po "(?<=0\.0\.0\.0 )[^ ]+(?= 0\.0\.0\.0)"
192.168.1.1
जैसा कि @AvashRaj ने बताया है कि यह केवल प्रयोग करके किया जा सकता है grep
(रिक्त स्थान का उपयोग करने की आवश्यकता नहीं है tr
):
route -n | grep -Po "0\.0\.0\.0\s*\K\S+(?=\s*0\.0\.0\.0)"
192.168.1.1
tr
, अकेले grep काम करेगाroute -n | grep -Po "0\.0\.0\.0 \s*\K\S+(?=\s*0\.0\.0\.0)"
मैं इस एक का उपयोग अक्सर:
route -n | awk '{ print $2 }' | grep -Eo '[1-9]{0,3}\.[1-9]{0,3}\.[0-9]{0,3}\.[1-9]{0,3}'
192.168.0.1
?
यदि आपके पास सिस्टम पर एक वेब ब्राउज़र तक पहुंच है, तो आप http://whatsmyrouterip.com/ पर जा सकते हैं और यह बिना किसी कमांड के आपके आईपी को खोजने में सक्षम होना चाहिए।
अन्यथा बस टर्मिनल खोलना और ip route | grep default
करना पर्याप्त होना चाहिए। यह आपके नेटवर्क इंटरफेस के आधार पर एक से अधिक दे सकता है।
hostname -I
190.200.200.107 172.21.0.1 172.17.0.1 172.19.0.1 172.18.0.1
तो केवल आईपी मुद्दा पाने के लिए
hostname -I | cut -d' ' -f1
190.200.200.107
nm-tool | grep -oP '(?i)gateway:\s*\K\S+'