2011-07-21 14 views
101

में डिफ़ॉल्ट गेटवे कैसे प्राप्त करें मुझे मैक मशीन पर डिफ़ॉल्ट गेटवे पुनर्प्राप्त करने की आवश्यकता है। मुझे पता है कि लिनक्स मार्ग में -एन एक आउटपुट देगा जिससे मैं आसानी से इस जानकारी को पुनः प्राप्त कर सकता हूं। हालांकि यह मैक ओएसएक्स (हिम तेंदुए) में काम नहीं कर रहा है।मैक ओएसएक्स

मैंने netstat -nr | grep 'default' भी कोशिश की, लेकिन मैं लिनक्स/यूनिक्स में route -n द्वारा उत्पादित क्लीनर आउटपुट की उम्मीद कर रहा था। netstat -nr उनके लिए सभी इंटरफेस और डिफ़ॉल्ट गेटवे सूचीबद्ध करता है।

किसी भी प्रकार का सुझाव या सही दिशा में एक संकेत की सराहना की जाएगी।

+2

सुपरयूसर में माइग्रेट करें? – JMD

उत्तर

162

आप कोशिश कर सकते हैं के साथ:

route -n get default 

यह जीएनयू/लिनक्स के route -n (या यहां तक ​​ip route show) के रूप में ही नहीं है, लेकिन डिफ़ॉल्ट मार्ग जानकारी की जाँच के लिए उपयोगी है। इसके अलावा, आप उस मार्ग की जांच कर सकते हैं जो संकुल किसी विशेष होस्ट को ले जाएगा। जैसे

route -n get www.yahoo.com 

उत्पादन होगा समान करने के लिए:

route to: 98.137.149.56 
destination: default 
     mask: 128.0.0.0 
    gateway: 5.5.0.1 
    interface: tun0 
     flags: <UP,GATEWAY,DONE,STATIC,PRCLONING> 
recvpipe sendpipe ssthresh rtt,msec rttvar hopcount  mtu  expire 
     0   0   0   0   0   0  1500   0 

IMHO netstat -nr तुम क्या जरूरत है। यहां तक ​​कि मैकॉक्स के नेटवर्क उपयोगिता ऐप (*) रूटिंग जानकारी दिखाने के लिए नेटस्टैट के आउटपुट का उपयोग करता है। Network utility screenshot displaying routing table information

मुझे आशा है कि इस मदद करता है :)

साथ (*) आप शुरू कर सकते हैं नेटवर्क उपयोगिता open /Applications/Utilities/Network\ Utility.app

+0

धन्यवाद। आपने हाल ही में नए घर पर कुछ घंटे बचाए जब टाइम वार्नर के मॉडेम ने फैसला किया कि वह चाहता था कि आईपी मेरा राउटर इस्तेमाल करे, और ifconfig गेटवे के बारे में झूठ बोला। –

+0

आपका स्वागत है @ChrisDoggett – Humber

2

मैं इन पंक्तियों के साथ कुछ प्रयोग करेंगे ...

netstat -rn | grep "default" | awk '{print $2}' 
+0

हम इसे उद्देश्य-सी प्रोग्रामिंग में कैसे प्राप्त कर सकते हैं। इसके लिए कोई फ्रेमवर्क है –

29

हो रही के लिए संबंधित आईपी पते की सूची, आप नेटस्टैट कमांड

का उपयोग कर सकते हैं 210
netstat -rn 

यह आईपी पते की एक लंबी सूची देता है और आवश्यक फ़ील्ड को ढूंढना आसान नहीं है। नमूना परिणाम निम्नानुसार है:

Routing tables 
Internet: 
Destination  Gateway   Flags  Refs  Use Netif Expire 
default   192.168.195.1  UGSc   17  0  en2 
127    127.0.0.1   UCS    0  0  lo0 
127.0.0.1   127.0.0.1   UH    1 254107  lo0 
169.254   link#7    UCS    0  0  en2 
192.168.195  link#7    UCS    3  0  en2 
192.168.195.1  0:27:22:67:35:ee UHLWIi   22  397  en2 1193 
192.168.195.5  127.0.0.1   UHS    0  0  lo0 

More result is truncated....... 

गेटवे का आईपी पता पहली पंक्ति में है; डिफ़ॉल्ट रूप से इसके पहले कॉलम पर एक।

केवल परिणाम के चयनित लाइनों को प्रदर्शित करने के लिए, हम यह आदेश फिल्टर के साथ साथ netstat

netstat -rn | grep 'default' 

ग्रेप आदेश का उपयोग करें और परिणाम डिफ़ॉल्ट होने के उन पंक्तियों को प्रदर्शित करता है कर सकते हैं। इस मामले में, आप निम्नलिखित की तरह परिणाम देख सकते हैं:

default   192.168.195.1  UGSc   14  0  en2 

आप आगे awk का उपयोग कर परिणाम फ़िल्टर कर सकते हैं आप प्रवेश द्वार है और कुछ नहीं की केवल आईपी पते की खोज में रुचि रखते हैं। Awk कमांड इनपुट परिणाम में पैटर्न मिलान करता है और आउटपुट प्रदर्शित करता है। यह तब उपयोगी हो सकता है जब आप सीधे अपने कार्यक्रम का उपयोग कुछ कार्यक्रम या बैच नौकरी में कर रहे हों।

netstat -rn | grep 'default' | awk '{print $2}' 

awk आदेश मैच के लिए कहता है और पाठ में परिणाम के दूसरे स्तंभ मुद्रित करें। अंतिम परिणाम इस प्रकार इस प्रकार है:

192.168.195.1 

इस मामले में, netstat प्रदर्शित करता है सभी परिणाम, ग्रेप केवल उस में 'डिफ़ॉल्ट' के साथ लाइन चयन करता है, और AWK आगे पाठ में दूसरे स्तंभ प्रदर्शित करने के लिए नमूने का मिलान ।

आप समान रूप से मार्ग का उपयोग कर सकते हैं-आवश्यक परिणाम प्राप्त करने के लिए डिफ़ॉल्ट आदेश प्राप्त नहीं कर सकते हैं। पूर्ण आदेश

route -n get default | grep 'gateway' | awk '{print $2}' 

ये आदेश लिनक्स के साथ-साथ यूनिक्स सिस्टम और मैक ओएस में भी अच्छी तरह से काम करते हैं।

4

grep उपयोगिता की आवश्यकता नहीं है। Awk यह सब कर सकते हैं:

netstat -rn | awk '/default/ {print $2}' 
     192.168.128.1 

नोट यदि आप (या एक वीपीएन, या दोनों) समानताएं की तरह कुछ चल रहा है, तो आप दो या अधिक डिफ़ॉल्ट रूटिंग प्रविष्टियों देख सकते हैं कि - यह सच हो सकता है अगर आप का उपयोग ' grep 'सुझाव ऊपर भी।

netstat -rn | awk '/default/ {print $2}' 
     192.168.128.1 
     link#12 

और

netstat -rn | awk '/default/ {print $2}'        
     utun1 
     192.168.128.1 
     link#12 

आगे उपयोग के लिए एक चर (_default) सेट करने के लिए .....

_default=$(netstat -rn inet | awk '/default/ {print $2}') # I prefer $(...) over back-ticks 

मामले में ('डिफ़ॉल्ट' के केवल एक प्रविष्टि कल्पना करते हुए) कई डिफ़ॉल्ट मार्गों का उपयोग करें:

netstat -rn | awk '/default/ {if (index($6, "en") > 0){print $2} }' 
     192.168.128.1 

ये परीक्षा es Mavericks Terminal.app में परीक्षण किया गया है और केवल ओएसएक्स के लिए विशिष्ट हैं। उदाहरण के लिए, अन्य * निक्स संस्करण अक्सर ईथरनेट/वायरलेस कनेक्शन के लिए 'eth' का उपयोग करते हैं, न कि 'en'। यह केवल ksh के साथ परीक्षण किया जाता है। अन्य गोले को थोड़ा अलग वाक्यविन्यास की आवश्यकता हो सकती है।