मेरे राउटर का आईपी पता (सिर्फ) कैसे दिखाएं?


22

मैं अपने राउटर के आईपी पते को प्राप्त करने के लिए क्या कमांड चला सकता हूं?

इस आदेश के साथ मेरे पास केवल मेरे राउटर का आईपी होना चाहिए और उदाहरण के लिए, पूरे रूटिंग टेबल (जैसे कि जब मैं चलाता हूं route -n)।

जवाबों:


22

एक-लाइनर्स:

  • 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}'


सरलnm-tool | grep -oP '(?i)gateway:\s*\K\S+'
अविनाश राज

@ अविनाशराज धन्यवाद! मैंने grep का अध्ययन नहीं किया है और मैं पहले से ही ज्ञान पर बहुत गहराई से काम कर रहा हूं। यह जानना अच्छा होगा
सर्जियो कोलोडियाज़नी

शायद यह मेरे कॉन्फ़िगरेशन की कुछ (अतिरिक्त) ख़ासियत के कारण है, लेकिन एडेप्टर के साथ एक मशीन पर eth0और wlan0दोनों सक्रिय रूप से जुड़े हुए हैं, लेकिन केवल प्रवेश द्वार पर कॉन्फ़िगर किए गए गेटवे के साथ wlan0, nm-tool | grep -i gateway | xargs echo | cut -d' ' -f2आउटपुट केवल 0.0.0.0nm-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..
heemayl

@EliahKagan आह, मैं देख रहा हूँ। मेरी आज्ञा के मामले में, इसमें 'गेटवे' के साथ लाइनें मिलती हैं, फिर इसे एक लाइन के रूप में रिक्त स्थान से अलग किया जाता है, और दूसरी वस्तु को काट देता है। क्योंकि आपके पास ऐसी दो लाइनें हैं, मेरी कमान केवल उनमें से एक को प्रिंट करती है। इस मामले में अविनाश की कमान बेहतर है। 0.0.0.0 के लिए, यहाँ कुछ संबंधित है । हेमेयेल की टिप्पणी के लिए, हां, यह सच है, और ओपी के प्रश्न में कोई अन्य लक्षण नहीं थे, केवल उत्पादन दिखाने के अलावा
सर्गी कोलोडियाज़नी

7

आप इसे कई तरह से पा सकते हैं

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 होगा के लिए ओ करने की जरूरत नहीं है ।
अविनाश राज

इतने सारे विकल्प। मेरे सिस्टम पर यह दो बार w / o यूनिक प्रिंट करता है। YOur समाधान भी काम करता है।
पैंथर

नोट उबंटू के कुछ संस्करणों पर tracepathसमर्थन करता है लेकिन दूसरों पर नहीं-m
एलियाह कगन

वैसे, @ bodhi.zazen, आपके उत्तर पर भिन्नता है, ट्रेसरूट का उपयोग करें। एक ही विचार अलग कमांड, सही?
सर्गी कोलोडियाज़नी

@ यकीन है, शायद कमांड और फ़िल्टरिंग विकल्पों की एक लंबी सूची है, sed, awk, perl, grep ...
पैंथर

6

जैसा कि आप आमतौर पर उपयोग करते हैं 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)"
अविनाश राज

1

मैं इस एक का उपयोग अक्सर:

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?
अविनाश राज

1

यदि आपके पास सिस्टम पर एक वेब ब्राउज़र तक पहुंच है, तो आप http://whatsmyrouterip.com/ पर जा सकते हैं और यह बिना किसी कमांड के आपके आईपी को खोजने में सक्षम होना चाहिए।

अन्यथा बस टर्मिनल खोलना और ip route | grep defaultकरना पर्याप्त होना चाहिए। यह आपके नेटवर्क इंटरफेस के आधार पर एक से अधिक दे सकता है।


0

मैं इसका उपयोग अक्सर और याद रखने में आसान करता हूं:

route | grep default | awk '{print $2}'

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