मैं LINUX में डिफ़ॉल्ट गेटवे को गंतव्य कैसे प्राप्त करूं?


11

मैं डिफ़ॉल्ट गेटवे प्राप्त करने की कोशिश कर रहा हूं, गंतव्य 0.0.0.0 का उपयोग कर रहा है

मैंने इस कमांड का उपयोग किया: netstat -rn | grep 0.0.0.0

और यह सूची इस प्रकार है:

Destination - Gateway      - Genmask         - Flags - MSS - Window - irtt - Iface
10.9.9.17   - 0.0.0.0      - 255.255.255.255 - UH    - 0     0        0    - tun0
133.88.0.0  - 0.0.0.0      - 255.255.0.0     - U     - 0     0        0    - eth0
0.0.0.0     - 133.88.31.70 - 0.0.0.0         - UG    - 0     0        0    - eth0

यहां मेरा लक्ष्य 0.0.0.0 गंतव्य का उपयोग करके डिफ़ॉल्ट गेटवे को पिंग करना है; इस प्रकार, वह "133.88.31.70" है; लेकिन यह 'grep' का उपयोग करने के कारण एक सूची देता है।

प्रश्न है: मैं केवल डिफ़ॉल्ट गेटवे कैसे प्राप्त करूं? नेट कनेक्शन ऊपर है या नहीं, इसकी पहचान के लिए मुझे अपनी बैश स्क्रिप्ट की आवश्यकता होगी।

जवाबों:


21
DEFAULT_ROUTE=$(ip route show default | awk '/default/ {print $3}')
ping -c 1 $DEFAULT_ROUTE

इससे आपकी समस्या का समाधान हो जाना चाहिए।


@ सूजी हा! देख? awk!
जेरेमी पॉवेल

करीब सिंगल-उद्धरण / करीब ब्रैकेट बेमेल अंत में मुझे लगता है - हालांकि महान काम करता है!
मार्क के कोवान

3
मैंने इस कमांड के साथ ऑनलाइन कुछ उत्तर देखे हैं, लेकिन उनमें से कोई भी समझाता है कि "शो डिफॉल्ट" का उपयोग क्यों किया जाता है। वास्तव में "आईपी रूट शो" बिना किसी पैरामीटर के मेरे लिए बिल्कुल वही काम करता है। तो मेरा सवाल यह है कि कमांड में "डिफ़ॉल्ट" क्यों है? इसका क्या मतलब है?
user658991

@ user658991 मैं इस खरगोश छेद से नीचे आया हूं और आप बिल्कुल सही हैं। यह वहाँ से बाहर सबसे आम संस्करणों पर कुछ भी नहीं करता है ip। वास्तव में के ip route showलिए एक उपनाम है ip route listऔर आप यह देखने के man ipलिए जांच कर सकते हैं कि इस उपकेंद्र में वाक्यविन्यास है ip route { list | flush } SELECTOR... और उन वैध चयनकर्ताओं में से एक भी सूचीबद्ध नहीं है default। मुझे ऐसा लगता है कि हमें वही ip route show table default करना चाहिए जो हम चाहते हैं, लेकिन दुर्भाग्य से ऐसा नहीं है। किसी और से, लाइन की शुरुआत का मिलान करें, भी (आपको चेतावनी दी गई है):ip route show | awk '/^default/{print $3}'
L0j1k

5
 ip route show default 0.0.0.0/0

यह कमांड बहुत अधिक तेज है तो ip route | grepकई (10000+) मार्गों के साथ सिस्टम पर डिफ़ॉल्ट है

उदाहरण के लिए पूर्ण बीजीपी और बैकअप के रूप में मैनुअल डिफ़ॉल्ट मार्ग के साथ मेरे राउटर से उदाहरण देखें

router:~# time ip route show default 0.0.0.0/0
default via XXX.XXX.192.254 dev eth0.123 

real    0m0.707s
router:~# time ip route | grep default
default via XXX.XXX.192.254 dev eth0.123 

real    0m8.596s
  • क्योंकि ip route show default showमेरे लिए सभी मार्ग न केवल डिफ़ॉल्ट मार्ग हैं
  • क्योंकि डिफ़ॉल्ट या 0.0.0.0/0 को पैरामीटर के रूप में ip route getस्वीकार नहीं किया जाता है

+1 प्रत्यक्ष देशी फ़िल्टरिंग को iproute2 के माध्यम से प्रदर्शित करने के लिए ! ऐसे कई मामले हैं जहां यह अद्भुत उपयोगिता सूट अधिक सटीक, विश्वसनीय और प्रदर्शन की तुलना में (माना जाता है कि रचनात्मक) विरासत लिनक्स टेक्स्टफू
RubyTuesdayDONO

1
यह एक महान जवाब है! लेकिन मैं अभी भी iproute2 के दस्तावेज से थोड़ा भ्रमित हूं। कमांड में "डिफ़ॉल्ट" क्या दर्शाता है? अगर मैं डॉक सही ढंग से पढ़ रहा हूं, तो यह कमांड "आईपी रूट शो डिफॉल्ट 0/0" के समान होनी चाहिए, क्या मैं सही हूं? "0/0" प्रारूप क्या है?
user658991

3

ip route show defaultडिफ़ॉल्ट गेटवे के लिए चाल करना चाहिए, या आप यह ip route get <someip>देखने के लिए उपयोग कर सकते हैं कि किसी विशेष आईपी पते के लिए मार्ग क्या है।


मैं आईपी मार्ग की कोशिश की और यह सभी प्रवेश द्वार के लिए सूची प्रदर्शित करता है .. और हाँ, डिफ़ॉल्ट एक तल पर भी प्रदर्शित होता है। उसके लिए धन्यवाद। =) लेकिन मेरा लक्ष्य यहां उस डिफ़ॉल्ट गेटवे के लिए उपयोग किए गए आईपी पते को प्राप्त करना है। बैश स्क्रिप्ट का उपयोग करते हुए, मैं यह जांचने के लिए पिंग करूंगा कि क्या यह ऊपर है या नहीं।
सूजी जूल

मुझे "शो डिफॉल्ट" के लिए चार प्रविष्टियाँ मिलती हैं। "आईपी रूट शो डिफॉल्ट | awk '/ default / {प्रिंट $ 3}" आपको केवल आईपी एड्रेस मिलना चाहिए।
डेविड पस्ले

2

यदि आप इसका उपयोग करना चाहते हैं netstat(तो यह लिनक्स पर काम नहीं करेगा ) सामान्य समाधान है:

netstat -rn | grep '^\(default\|0\.0\.0\.0\)' | awk '{print $2}'

यह रूटिंग टेबल दिखाता है, होस्टनाम ( netstat -rn) के समाधान के बजाय आईपी का उपयोग करते हुए ,
डिफ़ॉल्ट गेटवे (लाइनों के साथ 0.0.0.0या शुरू होने वाली default) की तलाश करता है,
और गेटवे होस्ट (परिणामों के दूसरे क्षेत्र ) को प्रिंट करता है।

\नियमित अभिव्यक्ति में वर्णों का प्रसार महत्वपूर्ण है:

  • \(और \)एक समूह निर्दिष्ट करें
  • \| वैकल्पिक चरित्र है (बाईं ओर वाली चीज़ या दाएं मैचों की चीज़)
  • आईपी ​​पते में डॉट्स का प्रतिनिधित्व किया जाता है \.- .एक नियमित अभिव्यक्ति के विपरीत शाब्दिक चरित्र का अर्थ है .(किसी भी एकल वर्ण से मेल खाता)

1
grep -eया egrepकोष्ठक की आवश्यकता के बिना चाल भी चलेगा और पाइप बच जाएगाegrep '^(default|0\.0\.0\.0)'
मार्क के कोवान

1

यह मेरा इसे करने का तरीका है:

#!/bin/sh
GATEWAY_DEFAULT=$(ip route list | sed -n -e "s/^default.*[[:space:]]\([[:digit:]]\+\.[[:digit:]]\+\.[[:digit:]]\+\.[[:digit:]]\+\).*/\1/p")
echo ${GATEWAY_DEFAULT}

1
 ip route show default | grep default | awk {'print $3'}

क्या यह यहाँ है


क्यों grep defaultजब आप पहले से ही निर्दिष्ट defaultअपने में मार्ग ipआदेश?
1919

0

बहुत आसान तरीका ... रूटिंग टेबल से पूछें कि यह नेटवर्क से बाहर आईपी तक कैसे पहुंचता है

Google DNS == 8.8.8.8

आईपी ​​रूट 8.8.8.8 मिलता है


0
ip route show 0/0

या

ip route show 0.0.0.0/0

या

ip route show 0.0.0.0/0.0.0.0

या

ip -f inet route show default

या

ip -4 route show default
  • मैंने जिन संस्करणों का इलाज किया है 'आईपी रूट शो' और 'आईपी रूट सूची' समकक्ष के रूप में (न कि 'आईपी मार्ग प्राप्त करें' के मामले में)
  • Https://bugzilla.kernel.org/show_bug.cgi?id=197899 पर एक स्पष्टीकरण है

अगर मैं इसे सही ढंग से समझता हूं, तो उस सटीक मार्ग के लिए डिफ़ॉल्ट गेटवे लुकअप - सभी-शून्य मार्ग - IPv4 या 0000: 0000: 0000: 0000: 0000: 0000 के लिए 0.0.0.0/0.0.0.0 (या 0/0) है। : 0000: 0000 (या: :) IPv6 के लिए।

हालाँकि (!), या तो AF को निर्दिष्ट किए बिना आप (-4 या -6 या-inet या -f inet6) का उपयोग करना चाहते हैं, या IPv4 या IPv6 उपसर्ग के रूप में ऑल-जीरो मार्ग निर्दिष्ट कर रहे हैं (0 का अर्थ है IPv4) , यह पता नहीं लगा सकता है कि 'डिफ़ॉल्ट' क्या है ...

निजी तौर पर, मुझे नहीं लगता कि इस बारे में मैन पेज बहुत स्पष्ट है, लेकिन यह सिर्फ मेरे दो सेंट है।

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