मेरा सार्वजनिक IP निर्धारित करने के लिए आदेश?


636

अगर मैं Google से जांच करता हूं , तो मैं अपना सार्वजनिक आईपी देख सकता हूं। क्या उबंटू कमांड-लाइन पर कुछ है जो मुझे एक ही उत्तर देगा?


2
"डायनेमिक आईपी होने", "एसएसएच इंटरनेट में कुछ अन्य प्रणाली का उपयोग करते हुए", "कमांड जो वर्तमान पब्लिक आईपी प्रदर्शित करेगा"। आप यहाँ चिकन / अंडे की समस्या देखते हैं? आप इसका पता जाने बिना रिमोट सर्वर पर कमांड कैसे चला पाएंगे? आपको no-ip.com / DynDNS.org जैसी सेवाओं में अधिक रुचि हो सकती है।
gertvdijk

सार्वजनिक आईपी मेरे दोस्त को जाने बिना कोई SSH नहीं कर सकता ... dynDNS में बहुत खर्च होता है और नो-आईपी कठिन काम होता है लेकिन स्थिति इसकी अनुमति नहीं देती है ... वैसे भी सवाल का पहले ही जवाब दिया जा चुका है .. आपके सुझाव के लिए धन्यवाद
भावेश दीवान

1
PS duckduckgo.com/?q=ip (कोई कमांड लाइन नहीं, लेकिन कोई बड़ा भाई न तो जी)
कैम्पा

1
हो सकता है कि यह एक अलग सवाल हो, लेकिन जब मेरा सार्वजनिक आईपी पता बदलता है, तो मैं एक अलर्ट देखना चाहूंगा। अभी के लिए, मैं सिर्फ एक कॉन्ट्रास्ट में निम्नलिखित उत्तरों का उपयोग कर रहा हूं notify-send
पीजे ब्रूनेट

नीचे महान समाधान। Centos उपयोग के लिए: ifconfig eth1 | sed -nre '/^[^ ]+/{N;s/^([^ ]+).*inet *([^ ]+).*/\2/p}'जहाँ eth1 नेटवर्क डिवाइस ओ रुचि है, आप सभी एडेप्टर के सभी ips दिखाने के लिए 'et1' स्ट्रिंग को छोड़ सकते हैं। इसके बजाय \2आप \1 \2प्रत्येक एडेप्टर के नाम भी लिख सकते हैं।
हाफेनक्रानिक

जवाबों:


916

यदि आप एक राउटर के पीछे नहीं हैं, तो आप इसका उपयोग करके पता लगा सकते हैं ifconfig

यदि आप एक राउटर के पीछे हैं, तो आपके कंप्यूटर को सार्वजनिक आईपी पते के बारे में नहीं पता होगा क्योंकि राउटर एक नेटवर्क एड्रेस ट्रांसलेशन करता है। आप कुछ वेबसाइट से पूछ सकते हैं कि आपका सार्वजनिक आईपी पता क्या उपयोग कर रहा है curlया wgetआपको जो जानकारी चाहिए, उसे निकाल सकते हैं:

curl -s https://checkip.dyndns.org | sed -e 's/.*Current IP Address: //' -e 's/<.*$//'  

या कम है

curl https://ipinfo.io/ip

27
ty - सही होने के बाद मैंने पोस्ट किया, मैंने महसूस किया कि मैंने पहले एक उत्तर के लिए Google नहीं किया: ऐसा लगता है कि यह काम करेगा curl -s checkip.dyndns.org|sed -e 's/.*Current IP Address: //' -e 's/<.*$//' अन्य संभावनाएं यहां सूचीबद्ध हैं: go2linux.org/what-is-my-public-ip-address-with-linux
kfmfe04

1
सुनिश्चित करें - आप इसे अपने उत्तर में जोड़ सकते हैं
kfmfe04

1
स्पष्ट करने के लिए: यह एक हैक था, और उस पर एक बहुत ही बदसूरत, इसलिए मैंने इसे सरल बनाने के लिए एक संपादन किया और ऐसा कुछ जिसे लोग याद रख सकें।
जेआरजी

2
वास्तव में जैसा कि जियोवानी पी ने कहा था। ओपी को स्वीकार किए गए anwser को बदलना चाहिए।
21

36
कर्ल -s ipinfo.io/ip
chao

385

बाहरी आईपी खोजने के लिए, आप या तो बाहरी वेब-आधारित सेवाओं का उपयोग कर सकते हैं, या सिस्टम आधारित विधियों का उपयोग कर सकते हैं। बाहरी सेवा का उपयोग करना आसान है, यह भी ifconfigआधारित समाधान आपके सिस्टम में तभी काम करेंगे जब आप पीछे न हों NAT। नीचे दो तरीकों पर विस्तार से चर्चा की गई है।

बाहरी आईपी का उपयोग बाहरी सेवाओं का उपयोग करना

सबसे आसान तरीका है एक कमांडलाइन ब्राउज़र या डाउनलोड टूल के माध्यम से बाहरी सेवा का उपयोग करना। चूंकि wgetउबंटू में डिफ़ॉल्ट रूप से उपलब्ध है, हम इसका उपयोग कर सकते हैं।
अपना आईपी खोजने के लिए, का उपयोग करें

$ wget -qO- https://ipecho.net/plain ; echo

सौजन्य :

आप अपने बाहरी आईपी को खोजने के लिए उपर्युक्त कमांड में मामूली बदलावों के साथ lynx(ब्राउज़र) का उपयोग कर सकते हैं ।curlwget

curlआईपी ​​खोजने के लिए उपयोग करना :

$ curl https://ipecho.net/plain

बेहतर स्वरूपित आउटपुट उपयोग के लिए:

$ curl https://ipecho.net/plain ; echo

एक तेजी से (यकीनन सबसे तेजी से) विधि का उपयोग कर digके साथ OpenDNSरिसोल्वर के रूप में:

अन्य उत्तर यहाँ सभी एक दूरस्थ सर्वर से HTTP पर जाते हैं। उनमें से कुछ को आउटपुट की पार्सिंग की आवश्यकता होती है, या सादे पाठ में सर्वर को प्रतिक्रिया देने के लिए उपयोगकर्ता-एजेंट हेडर पर भरोसा करते हैं। वे भी अक्सर बदलते हैं (नीचे जाएं, अपना नाम बदलें, विज्ञापन डालें, आउटपुट प्रारूप बदल सकते हैं आदि)।

  1. DNS प्रतिक्रिया प्रोटोकॉल मानकीकृत है (प्रारूप संगत रहेगा)।
  2. ऐतिहासिक रूप से DNS सेवाएं (OpenDNS, Google सार्वजनिक DNS, ..) बहुत लंबे समय तक जीवित रहती हैं और अधिक स्थिर, परिमाप्य और आमतौर पर देखा जाता है कि आज जो भी नए हिप whatismyip.com HTTP सेवा की तुलना में गर्म है।
  3. (उन गीक्स के लिए जो माइक्रो-ऑप्टिमाइज़ेशन की परवाह करते हैं), यह विधि स्वाभाविक रूप से तेज़ होनी चाहिए (केवल कुछ माइक्रो सेकंड के द्वारा हो)।

रिज़ॉल्वर के रूप में OpenDNS के साथ खुदाई का उपयोग करना:

$ dig +short myip.opendns.com @resolver1.opendns.com

111.222.333.444

से कॉपी किया गया: https://unix.stackexchange.com/a/81699/14497

बाहरी आईपी को बाहरी सेवाओं पर निर्भर किए बिना खोजना

  • यदि आप अपने नेटवर्क इंटरफ़ेस का नाम जानते हैं

अपने टर्मिनल में निम्नलिखित टाइप करें:

$ LANG=c ifconfig <interface_name> | grep "inet addr" | awk -F: '{print $2}' | awk '{print $1}'

इसके बाद के संस्करण में, की जगह <interface_name>, आपके वास्तविक इंटरफेस के नाम के साथ जैसे: eth0, eth1, pp0, आदि ...

उदाहरण उपयोग:

$ LANG=c ifconfig ppp0 | grep "inet addr" | awk -F: '{print $2}' | awk '{print $1}'
111.222.333.444
  • यदि आप अपने नेटवर्क इंटरफ़ेस का नाम नहीं जानते हैं

अपने टर्मिनल में निम्नलिखित टाइप करें (इससे आपके सिस्टम में प्रत्येक नेटवर्क इंटरफ़ेस का नाम और आईपी पता प्राप्त होता है):

$ LANG=c ifconfig | grep -B1 "inet addr" |awk '{ if ( $1 == "inet" ) { print $2 } else if ( $2 == "Link" ) { printf "%s:" ,$1 } }' |awk -F: '{ print $1 ": " $3 }'

उदाहरण उपयोग:

$ LANG=c ifconfig | grep -B1 "inet addr" |awk '{ if ( $1 == "inet" ) { print $2 } else if ( $2 == "Link" ) { printf "%s:" ,$1 } }' |awk -F: '{ print $1 ": " $3 }'
lo: 127.0.0.1
ppp0: 111.222.333.444

NB: आउटपुट सांकेतिक हैं और वास्तविक नहीं हैं।

सौजन्य: https://www.if-not-true-then-false.com/2010/linux-get-ip-ddb/

अपडेट करें

  1. LANG=cifconfigआधारित usages में जोड़ा गया है , ताकि यह हमेशा अंग्रेजी आउटपुट देता है, भले ही लोकेल सेटिंग के बावजूद।

1
@ Z9iT, ज़रूर .. यह किसी भी लिनक्स वितरण में काम करना चाहिए बशर्ते कि आपने स्थापित किया है। जैसा कि कहा गया है कि यदि आपके पास पहले से उपलब्ध कर्ल या लिनेक्स है तो इसके बजाय कृपया इसका उपयोग करें। आपको उपयोग करने के लिए रूट अनुमति की आवश्यकता होगीsudo apt-get install wget
saji89

13
Ifconfig वाले कमांड केवल काम करते हैं, यदि आप NAT के पीछे नहीं हैं।
lukassteiner 15

1
बस -wप्रतिध्वनि के बजाय कर्ल विकल्प का उपयोग करें :)curl -w '\n' ident.me
drAlberT

3
खुदाई का उपयोग करने का यह प्रस्ताव बहुत अच्छा है unix.stackexchange.com/questions/22615/…
बाइनरीनोमली

4
बाहरी सेवाओं के बिना अंतिम संस्करण केवल काम करता है, अगर आपका कंप्यूटर इंटरनेट से सीधे जुड़ा हुआ है जो कि शायद ही कभी होता है, अन्यथा आपको केवल अपना स्थानीय आईपी पता मिलता है।
रुबियो 7

117

मेरा पसंदीदा हमेशा रहा है:

curl ifconfig.me

सरल, टाइप करने में आसान।

आपको पहले कर्ल स्थापित करना होगा;)

अगर ifconfig.me डाउन है तो icanhazip.com और या ipecho.net पर प्रयास करें

curl icanhazip.com

या

curl ipecho.net

3
@ Z9iT, मैंने अभी यह जाँच की है। हां, यह आपके टर्मिनल में बाहरी आईपी का उत्पादन करेगा।
साजी 89

7
से प्रतिक्रिया समय ifconfig.meकाफी थोड़ा धीमा लगता है ipecho.net
ड्रू नोक

3
अगर आपके पास नहीं है, curlलेकिन wget:wget -U curl -qO- ifconfig.me
स्टीफन चेजेलस

2
ifconfig.me का जवाब नहीं लगता है :(
असफंद काजी

1
@AsfandYarQazi - यहाँ काम करना। आप वैकल्पिक में से एक का प्रयास कर सकते हैं, icanhazip.com
पैंथर

60

icanhazip.com मेरा पसंदीदा है।

curl icanhazip.com

आप स्पष्ट रूप से IPv4 का अनुरोध कर सकते हैं:

curl ipv4.icanhazip.com

यदि आपके पास नहीं है तो curlआप wgetइसके बजाय उपयोग कर सकते हैं :

wget -qO- icanhazip.com

धन्यवाद! मुझे ऊपर सुझाए गए कई प्रयास करने थे जब तक कि मुझे कुछ ऐसा नहीं मिला जो IPv6- सक्षम है। यह शर्म की बात है कि ऐसी सेवाएं आमतौर पर अभी भी आईपीवी 4 ही हैं।
व्लादिमीर imunát

48

मैंने सब कुछ कष्टप्रद और धीमा पाया है, इसलिए मैंने अपना लिखा। यह सरल और तेज है।

इसका एपीआई http://api.ident.me/ पर है

उदाहरण:

curl ident.me
curl v4.ident.me
curl v6.ident.me

1
वाह, यह वास्तव में तेज था !
वॉल्ड्रियस

1
मुझे icanhazip.com समाधान तेजी से मिल रहा है और इसमें आउटपुट में एक नई पंक्ति शामिल है।
टायलर कोलियर

1
हाँ, यह वास्तव में हाल ही में तेज था। बस मेरा हल टाल दिया।
पियरे कैरियर

2
कुडोस! 2 साल और आप इसे अभी भी बनाए हुए हैं। बहुत बढ़िया। "मुझे पहचानें", क्या मेरे मन में आता है, जब मुझे आईपी चेक की आवश्यकता होती है :)
मोहनीश

aws तेज है time curl http://checkip.amazonaws.com-> 0.91svs .241sफॉर ident.meलेट्स
जस्ट प्रेयर

42

आप अपने सार्वजनिक आईपी का पता लगाने के लिए HTTP अनुरोध के बजाय एक DNS अनुरोध का उपयोग कर सकते हैं:

$ dig +short myip.opendns.com @resolver1.opendns.com

यह आपके आईपी ​​पते के लिए resolver1.opendns.comजादुई myip.opendns.comhostname को हल करने के लिए dns सर्वर का उपयोग करता है ।


3
यह वास्तव में तेज है। मैंने एक वॉर्मअप को अंजाम दिया, फिर 10 ने प्रत्येक को निष्पादित किया और curl icanhazip.comcurlसंस्करण के लिए औसत : 174ms। DNS-only संस्करण के लिए औसत: 9ms। ~ 19x तेज़। इसे भी देखें: unix.stackexchange.com/a/81699/8383
एडम

1
@AdamMonsen लिंक के लिए धन्यवाद। DNS का उपयोग करने की बात (जैसा कि आपके द्वारा जोड़ा गया उत्तर) कहता है कि प्रतिक्रिया मानक है (और बदलने की संभावना नहीं है) और सेवा (OpenDNS) अपने http विकल्पों में से अधिकांश से अधिक समय तक रह सकती है। अनुरोध को शुरू करने में लगने वाला समय समय के साथ शुरू हो सकता है।
jfs

हां। मुझे आश्चर्य नहीं होगा अगर curlखुद की तुलना में धीमी है dig। यहां तक ​​कि अगर वे संभव के रूप में समान होने के लिए फिर से लिखे गए, curlतब भी धीमे रहेंगे; यह HTTP ( DNS सहित ) का digउपयोग करता है और केवल DNS का उपयोग करता है।
एडम मोनसेन

22

अमेज़न AWS

curl http://checkip.amazonaws.com

नमूना उत्पादन:

123.123.123.123

क्योंकि मुझे यह पसंद है:

  • यह सिर्फ प्लेटेक्स्ट आईपी लौटाता है, और कुछ नहीं
  • यह एक प्रसिद्ध प्रदाता से है जो जल्द ही कभी भी ऑफ़लाइन जाने की संभावना नहीं है

18

मैं एक का उपयोग कर रहा हूँ:

wget -O - -q icanhazip.com

हाँ, आप आईपी कर सकते हैं :-)


3
मैं पसंद करता हूं कि curl icanhazip.comकभी-कभी wgetकेवल एक ही उपलब्ध होता है, लेकिन कभी-कभी कोई wgetभी उपलब्ध नहीं होता है और curlयह आपका एकमात्र विकल्प है (जैसे ओएस / एक्स)। किसी भी तरह से curl icanhazip.comके रूप में लगभग के रूप में आसान है curl ifconfig.me, लेकिन बहुत मजेदार ;-)
TryTryAgain

11

इस प्रकार टाइप करें, Enterजहां संकेत दिया गया है:

telnet ipecho.net 80Enter
GET /plain HTTP/1.1Enter
HOST: ipecho.net Enter
BROWSER: web-kitEnter
Enter

यह मैन्युअल रूप से एक HTTP अनुरोध प्रस्तुत करता है, जो आपके आईपी को एक के नीचे लौटा देगा HTTP/1.1 200 OK reply

उदाहरण आउटपुट:

$ telnet ipecho.net 80
Trying 146.255.36.1...
Connected to ipecho.net.
Escape character is '^]'.
GET /plain HTTP/1.1
HOST: ipecho.net
BROWSER: web-kit

HTTP/1.1 200 OK
Date: Tue, 02 Jul 2013 07:11:42 GMT
Server: Apache
Expires: Mon, 26 Jul 1997 05:00:00 GMT
Cache-Control: no-cache
Pragma: no-cache
Vary: Accept-Encoding
Transfer-Encoding: chunked
Content-Type: text/html

f
111.222.333.444
0

6
अच्छा है, यह अच्छी तरह से काम किया है, कर्ल स्थापित करने के लिए मेरे लिए एक फायदा नहीं था: एक लाइनर: प्रिंटफ "GET / सादा HTTP / 1.1 \ nHOST: ipecho.net \ nBROWSER: वेब-किट \ n \ n" | nc ipecho.net 80
ओजोन

9

एक और तेज एक (अच्छी तरह से सबसे तेज, अपेक्षाकृत हो सकता है)

curl ipecho.net/plain

9

इसके लिए, STUN का आविष्कार किया गया था। एक ग्राहक के रूप में आप सार्वजनिक रूप से उपलब्ध STUN सर्वर के लिए एक अनुरोध भेज सकते हैं और इसे वापस आईपी पता देता है जो इसे देखता है। निम्न स्तर के प्रकार whatismyip.com के रूप में यह कोई HTTP और कोई चालाकी से तैयार DNS सर्वर का उपयोग नहीं करता है, लेकिन धधकते तेज STUN प्रोटोकॉल।

का उपयोग करते हुए stunclient

यदि आपने stunclient( apt-get install stuntman-clientडेबियन / ubuntu पर) स्थापित किया है, तो आप बस कर सकते हैं:

$stunclient stun.services.mozilla.com
Binding test: success
Local address: A.B.C.D:42541
Mapped address: W.X.Y.Z:42541

A.B.C.Dस्थानीय जाल पर आपकी मशीन का IP पता कहां है और W.X.Y.Zवेबसाइटों से IP पता सर्वर है जैसे बाहर से देखें (और जिसे आप देख रहे हैं)। उपयोग करने से sedआप केवल एक आईपी पते तक के उत्पादन को कम कर सकते हैं:

stunclient stun.services.mozilla.com |
    sed -n -e "s/^Mapped address: \(.*\):.*$/\1/p"

हालाँकि, आपका प्रश्न यह था कि कमांड लाइन का उपयोग करके इसे कैसे खोजा जाए, जो किसी STUN क्लाइंट का उपयोग कर बाहर हो सकता है। तो मुझे आश्चर्य होता है ...

का उपयोग करते हुए bash

STUN अनुरोध को हैंडक्राफ्ट किया जा सकता है, बाहरी STUN सर्वर का उपयोग करके भेजा netcatजा सकता है और पोस्ट-प्रोसेस्ड का उपयोग किया जा सकता है dd, hexdumpऔर sedजैसे:

$echo -en '\x00\x01\x00\x08\xc0\x0c\xee\x42\x7c\x20\x25\xa3\x3f\x0f\xa1\x7f\xfd\x7f\x00\x00\x00\x03\x00\x04\x00\x00\x00\x00' |
    nc -u -w 2 stun.services.mozilla.com 3478 |
    dd bs=1 count=4 skip=28 2>/dev/null |
    hexdump -e '1/1 "%u."' |
    sed 's/\.$/\n/'

प्रतिध्वनि द्विआधारी STUN अनुरोध (0x0001 इंगित करता है बाइंडिंग अनुरोध) को परिभाषित करता है, जिसमें कुकी 0xc00cee के साथ लंबाई 8 (0x0008) और वायरशार्क से कुछ चिपकाया सामान होता है। केवल बाहरी आईपी का प्रतिनिधित्व करने वाले चार बाइट्स को उत्तर से साफ और मुद्रित किया जाता है।

कार्य करना, लेकिन उत्पादन उपयोग के लिए अनुशंसित नहीं :-)

PS कई STUN सर्वर उपलब्ध हैं क्योंकि यह SIP और WebRTC के लिए एक मुख्य तकनीक है। मोज़िला से किसी एक का उपयोग करना सुरक्षित गोपनीयता-योग्य होना चाहिए, लेकिन आप किसी अन्य का उपयोग भी कर सकते हैं: STUN सर्वर सूची


Geekiest के लिए +1 और वास्तव में सबसे एप्रोपोस तकनीक है। Http क्वेरी काम करती है, जो कि मैं अपने पूरे जीवन का उपयोग कर रहा हूं, लेकिन मुझे यह पसंद है कि वास्तव में प्रश्न में कुछ सोचा गया है। मुझे इसकी जानकारी नहीं थी। धन्यवाद!
माइक एस

7

टेलनेट द्वारा इसके लिए मेरे पास एक बेवकूफ सेवा है। कुछ इस तरह:

telnet myip.gelma.net

Your IPv4: xxx.xxx.xxx.xxx
Your IPv6: ::ffff:xxxx:xxxx

इसका इस्तेमाल करने के लिए स्वतंत्र महसूस करें।


5

आप केवल बैश का उपयोग किए बिना एक वेब पेज पढ़ सकते हैं curl, wget:

$ exec 3<> /dev/tcp/icanhazip.com/80 && # open connection
  echo 'GET /' >&3 &&                   # send http 0.9 request
  read -u 3 && echo $REPLY &&           # read response
  exec 3>&-                             # close fd

यह checkip.amazonaws.comमेरे लिए सबसे तेज़ है
अविंद्र गोलचरण


2

राउटर से लॉगिन एक्सेस के साथ हममें से उन लोगों के लिए, राउटर से यह पूछने के लिए एक स्क्रिप्ट का उपयोग करते हुए कि उसका 'वान आईपी एड्रेस' बाहरी आईपी एड्रेस को निर्धारित करने का सबसे कारगर तरीका है। उदाहरण के लिए निम्नलिखित पायथन लिपि में मेरे Medialink MWN-WAPR300N राउटर के लिए बाहरी आईपी प्रिंट होता है:

import urllib, urllib2, cookielib
import re
from subprocess import check_output as co

cookie_jar = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie_jar))
urllib2.install_opener(opener)

def get(url, values=None):
  data = None
  if values: data = urllib.urlencode(values)
  req = urllib2.Request(url, data)
  rsp = urllib2.urlopen(req)
  return rsp.read()

router = co(['ip', '-o', 'ro', 'list', '0.0.0.0/0']).split()[2]
url = "http://" + router

get(url+"/index.asp")
get(url+"/LoginCheck", dict(checkEn='0', Username='admin', Password='admin'))
page = get(url+"/system_status.asp")

for line in page.split("\n"):
  if line.startswith("wanIP = "):
    print line.split('"')[1]
    exit(1)

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

दूसरे राउटर के लिए स्क्रिप्ट को कस्टमाइज़ करने के लिए, मैं यह बताने के लिए फ़ायरफ़ॉक्स में टैम्परडेटा एडऑन का उपयोग करने की सलाह देता हूं कि HTTP क्या अनुरोध करता है।


2
आपको व्याकरणिक रूप से राउटर का आईपी पता प्राप्त करने का प्रयास करना चाहिए। उदाहरण के लिए router = subprocess.check_output(['ip', '-o', 'ro', 'list', '0.0.0.0/0']).split()[2]
क्रिस्टियन सियुपिटु

2

ये स्थानीय आईपी प्राप्त करेंगे:

ifconfig

या कम उत्पादन के लिए:

ifconfig | grep inet

भी

ip addr show

और:

hostname -I

इसे बाहरी आईपी मिलना चाहिए

wget http://smart-ip.net/myip -O - -q ; echo

नायब यदि आप इसे स्थापित करने से गुरेज नहीं करते हैं curl, तो:

curl http://smart-ip.net/myip

1
ifconfig | sed -nre '/^[^ ]+/{N;s/^([^ ]+).*addr: *([^ ]+).*/\1,\2/p}'
हन्नू

1
ifconfig | sed -nre '/^[^ ]+/{N;N;s/^([^ ]+).*addr: *([^ ]+).*addr: *([^ ]+).*/\1,\2,\3/p}'- v4 और v6 आईपी।
हन्‍नु

2

यूपीएनपी द्वारा कई होम रूटर्स की मदद ली जा सकती है:

curl "http://fritz.box:49000/igdupnp/control/WANIPConn1" -H "Content-Type: text/xml; charset="utf-8"" -H "SoapAction:urn:schemas-upnp-org:service:WANIPConnection:1#GetExternalIPAddress" -d "<?xml version='1.0' encoding='utf-8'?> <s:Envelope s:encodingStyle='http://schemas.xmlsoap.org/soap/encoding/' xmlns:s='http://schemas.xmlsoap.org/soap/envelope/'> <s:Body> <u:GetExternalIPAddress xmlns:u='urn:schemas-upnp-org:service:WANIPConnection:1' /> </s:Body> </s:Envelope>" -s

फिर, उत्तर से आईपी पते को पकड़ें।

grep -Eo '\<[[:digit:]]{1,3}(\.[[:digit:]]{1,3}){3}\>'

2

यदि आप DD-WRT का उपयोग कर रहे हैं तो यह मेरे लिए काम करता है:

curl -s 192.168.1.1 | grep "ipinfo" | awk -v FS="(IP: |</span)" '{print $2}'

या

curl -s -u your_ddwrt_username:your_ddwrt_password http://192.168.1.1 | grep "ipinfo" | awk -v FS="(IP: |</span)" '{print $2}'
  • जहां 192.168.1.1 डीडी-डब्ल्यूआरटी राउटर का गेटवे / राउटर लैन आईपी एड्रेस है।

  • -S घटक चुप का मतलब है (यानी कर्ल प्रगति जानकारी प्रदर्शित नहीं करते)।

  • ओह, मुझे उल्लेख करना चाहिए कि मैं उपरोक्त "DD-WRT v24-sp2 (01/04/15) std" का उपयोग करता हूं ।


0

उपयोग करें ip!

ip addr show

फिर संबंधित एडाप्टर (नहीं lo, और आमतौर पर eth0) के लिए देखें, और पास के आईपी पते का पता लगाएं inet


2
सवाल सार्वजनिक नहीं आंतरिक आईपी पते के बारे में है
वुल्फ

0

शायद मुझे थोड़ी देर हो गई है, लेकिन inxi इसे काफी आसान कर सकता है।

इंस्टॉल करें I inxi

sudo apt install inxi

फिर निम्न कमांड चलाएँ

inxi -i

zइस तरह की साइटों के लिए कॉपी और पेस्ट करने के विकल्प का उपयोग करके मेरी जानकारी के साथ उदाहरण को अवरुद्ध किया गया :

~$ inxi -iz
Network:   Card: NVIDIA MCP77 Ethernet driver: forcedeth
           IF: eth0 state: up speed: 1000 Mbps duplex: full mac: <filter>
           WAN IP: <filter>
           IF: eth0 ip-v4: <filter> ip-v6-link: N/A

जहां यह कहा गया <filter>है कि आपका WAN IP, IPv4, MAC एड्रेस आदि कहां दिखाई देगा


-2

बस किसी भी वेबसाइट या सेवा के लिए एक अनुरेखक जारी करें।

sudo traceroute -I google.com

लाइन 2 हमेशा मेरे सार्वजनिक आईपी पते के बाद लगता है कि यह मेरे राउटर गेटवे के पीछे है।

user@user-PC ~ $ sudo traceroute -I google.com
traceroute to google.com (173.194.46.104), 30 hops max, 60 byte packets
 1  25.0.8.1 (25.0.8.1)  230.739 ms  231.416 ms  237.819 ms
 2  199.21.149.1 (199.21.149.1)  249.136 ms  250.754 ms  253.994 ms**

तो, बैश कमांड बनाओ।

sudo traceroute -I google.com | awk -F '[ ]' '{ if ( $2 ="2" ) { print $5 } }'

और उत्पादन ...

(199.21.149.1)

मुझे नहीं लगता कि PHP स्क्रिप्ट पर निर्भर है और इस तरह अच्छा अभ्यास है।


यह दिलचस्प है, हालांकि वास्तव में धीमा है और इस तरह से मेरा बाहरी आईपी नहीं मिलता है
rubo77

यह उत्तर उपयोगी होने के लिए बहुत गलत है। मेरे कॉर्पोरेट वातावरण में मुझे अपना आईपी पता बिल्कुल नहीं मिलता है। एकमात्र तरीका यह काम करता है यदि आप समझते हैं कि आपके स्थानीय राउटर और स्विच कैसे तैयार किए जाते हैं, और फिर भी यह लाइन 2 पर नहीं हो सकता है जो आपके द्वारा कूदने वाले स्थानीय हॉप्स की संख्या पर निर्भर करता है। इस तकनीक से एक सुसंगत एल्गोरिदम बनाने का कोई तरीका नहीं है, और यहां कई अन्य समाधान हैं जो सरल हैं और आपको हर बार उचित जवाब मिलेगा।
माइक एस

हालांकि यह कुछ विशेष कॉन्फ़िगरेशन में काम कर सकता है, मैंने वास्तव में अपने बाहरी आईपी को एक ट्रेसरआउट में कभी नहीं देखा है। यह आम तौर पर या तो मेरा प्रवेश द्वार है (यदि मैं NAT के पीछे नहीं हूँ), या मेरे राउटर का प्रवेश द्वार, लेकिन ज्यादातर कुछ और राउटर दूर।
1717

उर्फ आईपी = 'लिनेक्स
डंप

-2

.8. 8.8. being.ogle को छोड़कर कोई भी निर्भरता वाला एक कमांड नहीं है

echo $(ip route get 8.8.8.8 | awk '{print $NF; exit}')

यह केवल आपको आपके स्थानीय आउटगोइंग इंटरफ़ेस का आईपी-पता बताता है।
गुंटबर्ट

यदि मैं इसे क्लाउड सर्वर पर चलाता हूं तो कमांड सार्वजनिक आईपी पता दिखाती है। यह सवाल नहीं था?
रॉल्फ

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