मैं ifconfig या hostname -i कमांड का उपयोग करके अपना आईपी पता पा सकता हूं।
लेकिन मुझे अपना सार्वजनिक आईपी कैसे मिलेगा?
(मेरे पास एक स्थिर सार्वजनिक आईपी है, लेकिन मैं इसे यूनिक्स कमांड का उपयोग करके पता लगाना चाहता हूं)
मैं ifconfig या hostname -i कमांड का उपयोग करके अपना आईपी पता पा सकता हूं।
लेकिन मुझे अपना सार्वजनिक आईपी कैसे मिलेगा?
(मेरे पास एक स्थिर सार्वजनिक आईपी है, लेकिन मैं इसे यूनिक्स कमांड का उपयोग करके पता लगाना चाहता हूं)
जवाबों:
curl ifconfig.me
curl ifconfig.me/ip
(सिर्फ आईपी के लिए)
curl ifconfig.me/all
(अधिक जानकारी के लिए, समय लगता है)
अधिक आदेशों की यात्रा के लिए: http://ifconfig.me/#cli_wrap
curl http://checkip.amazonaws.com/
आप निवेदन कर सकते हैं myip.opendns.com
। OpenDNS से। dig @208.67.222.220 myip.opendns.com
dig @resolver1.opendns.com myip.opendns.com
। या विंडोज पर nslookup myip.opendns.com resolver1.opendns.com
:।
dig @208.67.222.220 myip.opendns.com +short
पूरे जवाब के माध्यम से जाने के बिना सीधे आईपी प्राप्त करने के लिए।
dig @ns1.google.com -t txt o-o.myaddr.l.google.com +short
dig -4 @ns1-1.akamaitech.net -t a whoami.akamai.net +short
dig -4 @resolver1.opendns.com -t a myip.opendns.com +short
ध्यान दें कि उपरोक्त केवल वर्तमान में IPv4 के लिए काम करता है (इनमें से कोई भी रिज़ॉल्वर वर्तमान में IPv6 नहीं है, लेकिन यदि आप छोड़ देते हैं -4
और स्पष्ट है -t a
, तो आप भविष्य में इसे तोड़ने का जोखिम उठाते हैं (Google के अपवाद के साथ txt
, जो वास्तव में काम कर सकते हैं) IPv6 एक दिन, यदि Google द्वारा ठीक से सक्षम किया गया है))।
ध्यान दें कि myip.opendns.com
केवल के माध्यम से resolvable है resolver1.opendns.com
, और नहीं के साथ auth1.opendns.com
- तो, वे कुछ DNS अपहरण और अपने स्वयं के डोमेन नाम के बीच-बीच में करते हुए प्रतीत होते हैं! इस प्रकार, आप इसे एक यादृच्छिक रिज़ॉल्वर के आईपी को खोजने के लिए उपयोग नहीं कर सकते, क्योंकि resolver1.opendns.com
यह आधिकारिक नहीं है myip.opendns.com
।
ध्यान दें कि o-o.myaddr.l.google.com
सबसे लचीला और भविष्य-प्रूफ दृष्टिकोण जैसा दिखता है; यह परीक्षण के लिए भी अच्छा है कि क्या आपका DNS रिसॉल्वर क्लाइंट सबनेट के लिए प्रयोगात्मक EDNS0 एक्सटेंशन का समर्थन करता है (जो बहुत कम रिज़ॉल्वर के लिए समर्थन है):
% dig @8.8.8.8 -t txt o-o.myaddr.l.google.com +noall +answer +stats | tail -8
;; global options: printcmd
o-o.myaddr.l.google.com. 60 IN TXT "74.125.189.16"
o-o.myaddr.l.google.com. 60 IN TXT "edns0-client-subnet 88.198.54.0/24"
;; Query time: 13 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Sun Dec 8 20:38:46 2013
;; MSG SIZE rcvd: 114
dig +short AAAA myip.opendns.com @2620:0:ccc::2
:।
-4
या -6
यदि आपको निर्दिष्ट करना चाहिए ।
यदि आपके पास इंटरनेट का उपयोग है, तो एक बहुत ही सरल एवर है:
curl icanhazip.com
ध्यान रखें, अपने आईपी के लिए तीसरे पक्ष के स्रोतों पर भरोसा करना समस्याग्रस्त हो सकता है, खासकर यदि आपके डेटा के साथ ऐसा करने का विशेष अर्थ है।
एक अधिक भरोसेमंद तरीका एक ज्ञात, भरोसेमंद डीएनएस सर्वर (आदर्श रूप से डीएनएसएसईसी चल रहा है) को चुनना है और इसके साथ बॉक्स के होस्टनाम को क्वेरी करना है, बशर्ते आपके डीएनएस सर्वर में ऐसी प्रविष्टियां हों;
dig @trustworthysource.com +short `hostname`
मैंने इसके लिए एक सरल और तेज़ वेबसेवा लिखी।
curl ident.me
आप अपने IPv4 के लिए पूछ सकते हैं:
curl v4.ident.me
या IPv6:
curl v6.ident.me
और एपीआई http://api.ident.me/ पर प्रलेखित है
एक तरीका: http://www.whatismyip.com/
अगर
तब आप सिर्फ अपने सभी इंटरफेस के आईपी पतों की सूची प्राप्त करने के लिए इंटरफेस ("इनट एड्र:" भाग) के आईपी पते के लिए ifconfig से आउटपुट पार्स कर सकते हैं। एक आईपी पता जो निजी श्रेणी में नहीं है (देखें http://en.wikipedia.org/wiki/IP_address#IPv4_pStreet_addresses ) आपका सार्वजनिक आईपी पता है।
उसी सूची के माध्यम से भी प्राप्त किया जा सकता है
ip addr show
जो पार्स करना आसान हो सकता है।
यदि आपके पास प्रत्यक्ष इंटरनेट कनेक्शन (NAT आदि) नहीं है, तो बाहरी मदद के बिना आपके सार्वजनिक आईपी पते को खोजने का कोई तरीका नहीं है (क्योंकि आपका कंप्यूटर इसे नहीं जानता है)। फिर आपको इसे अन्य उत्तरों की तरह करना होगा।
मैंने एसटीयूएन प्रोटोकॉल का उपयोग करके थोड़ा अलग दृष्टिकोण लिया जो एनएटी ट्रैवर्सल के लिए डिज़ाइन किया गया था। यदि आप उबंटू का उपयोग करते हैं तो आप टाइप करके पैकेज "स्टन" को स्थापित कर सकते हैं:
sudo apt-get install stun
पैकेज एक STUN सर्वर स्थापित करता है जिसकी आपको शायद आवश्यकता नहीं है, लेकिन यह STUN परीक्षण क्लाइंट के साथ भी आता है जिसका उपयोग मैंने इस समस्या को हल करने के लिए किया था। अब आप अपने सार्वजनिक IP को एक (इतना सरल) कमांड के साथ पुनः प्राप्त कर सकते हैं:
stun -v stunserver.org 2>&1 1>/dev/null | grep MappedAddress | sed -e 's/.*MappedAddress = //' -e 's/:.*//' | uniq
अब, यह क्या करता है: stun सार्वजनिक STUN सर्वर "stunserver.org" से संपर्क करता है और अपने सार्वजनिक आईपी के साथ वापस उत्तर प्राप्त करता है, बाकी कमांड केवल आउटपुट से आईपी को फ़िल्टर करने के लिए है।
एक तरीका है, आप पेज पर एक अनुरोध कर सकते हैं
http://www.biranchi.com/ip.php
यह आपके सिस्टम का IP पता लौटाता है
text/html
उस छद्म एपीआई रिटर्न के लिए ठीक है - यह निश्चित रूप से XML या JSON नहीं है। text/plain
हो सकता है, लेकिन यह पूरी तरह से प्रयोग करने योग्य है text/html
।
wget -q -O - http://wgetip.com/
Google अब आपका सार्वजनिक आईपी पता: http://www.google.com/search?q=ip प्रदर्शित करता है
User-Agent
पृष्ठ को स्ट्रिंग की आपूर्ति की जाती है। फ़ायरफ़ॉक्स के साथ, यह काम करता है; लेकिन SeaMonkey "फ़ायरफ़ॉक्स" स्ट्रिंग के साथ अक्षम ("general.useragent.compatMode.firefox" के माध्यम से गलत पर सेट), यह अचानक नहीं करता है। इसका कोई सुराग नहीं है कि Google स्पष्ट रूप से केवल किसी भी गेको के बजाय फ़ायरफ़ॉक्स के लिए इस तरह से सामान सक्षम करता है, क्योंकि गेको पर आधारित कई अन्य डेस्कटॉप ब्राउज़र हैं जो समान रूप से संगत हैं, जिनमें सीमोंकी शामिल हैं।
ठीक है ... मुझे पता है कि इस तथ्य के बाद रास्ता है और शायद पोस्टिंग के लायक भी नहीं है, लेकिन यहां मेरा काम करने वाला समाधान है।
#!/bin/sh
IP="$(ifconfig | egrep 'inet ' | sed -e 's/inet //' -e 's/addr://' -e 's/ Bcast.*//' -e 's/127.*//')"
echo $IP
अच्छा और सरल।
hostname -I
(राजधानी 'i') के साथ भी कर सकते हैं ।
सबसे सरल तरीका है http://ifconfig.me/ का उपयोग करें , जैसा कि सुझाव दिया गया है।
इस पृष्ठ पर, आपको पता चल जाएगा कि आप किस जानकारी को पुनः प्राप्त करना चाहते हैं, इसके लिए किस कमांड का उपयोग करना है।
आईपी के लिए:
कर्ल ifconfig.meया
कर्ल ifconfig.me/ip
सार्वजनिक होस्टनाम के लिए:
कर्ल ifconfig.me/host
XML फ़ाइल में सभी informations के लिए:
कर्ल ifconfig.me/all.xml
आदि ... बस http://ifconfig.me देखें
मैं यह बहुत कुछ कर रहा हूं, और बहुत सारे उपकरणों से, इसलिए मैंने एक सर्वर पर अपनी दो सेवाएं दी हैं:
वेबसर्वर के मूल में php फाइल:
user@host:~$ cat index.php`
<?php echo $_SERVER['REMOTE_ADDR']; echo "\n" ?>
एक खोल पर उपयोग:
$ curl -4 mydomain.com
79.22.192.12
ipv6 के साथ काम करना भी:
$ curl mydomain.com
2a01:e34:ee7d:180::3
Netcat के साथ:
$ echo "GET /" | nc myserver.com 80
2a01:e34:ee7d:180::3
सिस्को राउटर पर:
router#more http://myserver.com/index.php
79.22.192.12
एक कस्टम टेलनेट सर्वर के साथ त्वरित हैक: xinetd स्पॉनिंग / usr / बिन / env:
service telnet
{
server = /usr/bin/env
socket_type = stream
protocol = tcp
flags = IPv6
wait = no
port = 23
cps = 3 30
passenv = %a
}
और फिर इसे टेलनेट करें:
$ nc -4 myserver.com 23
REMOTE_HOST=::ffff:79.22.192.12
$ nc myserver.com 23
REMOTE_HOST=2a01:e34:ee7d:180::3
राउटर के साथ भी यही काम करता है:
router#telnet myserver.com
79.22.192.12
इस तरह से आप इसे अपने आंतरिक नेटवर्क पर काम कर सकते हैं, अगर कुछ नेट या प्रॉक्सी संचार में शामिल है और आप जानना चाहते हैं कि आईपी क्या दिखाई देता है।
इसके लिए किसी तीसरे पक्ष की सेवा की आवश्यकता नहीं है।
बाहरी स्रोतों पर भरोसा करने से बचने के लिए, मैं अपने राउटर में टेलनेट करने और इसके सार्वजनिक इंटरफ़ेस का आईपी पता प्राप्त करने के लिए उम्मीद का उपयोग करता हूं। यहाँ एक उदाहरण है उम्मीद स्क्रिप्ट:
#!/usr/bin/expect
if { $argc < 3 } {
puts "usage: ./telnet2router.exp router-ip username password"
return -1
}
set ip [lrange $argv 0 0]
set username [lrange $argv 1 1]
set password [lrange $argv 2 2]
spawn telnet $ip
expect "login:" {
send "$username\r"
}
expect "Password:" {
send "$password\r"
}
expect "#" {
send "ifconfig ppp0 | grep inet\r"
send "exit\r"
}
expect eof
मैं तब सार्वजनिक स्क्रिप्ट प्राप्त करने के लिए उपरोक्त स्क्रिप्ट को निष्पादित करता हूं:
./telnet2router.exp <router-ip> <username> <password> | grep "inet addr" | cut -d : -f 2 | cut -d " " -f 1
बेशक, यह इस धारणा पर आधारित है कि मेरे पास राउटर की पहुंच है, और इसके लिनक्स-आधारित राउटर, ifconfig कमांड उपलब्ध है।
कई अन्य सवालों की नकल (इसलिए मेरा -1 वोट)।
एक सरल शेल स्क्रिप्ट समाधान यहां पाया जा सकता है:
http://bash.cyberciti.biz/misc-shell/read-local-ip-address/
लिनक्स, FreeBSD, SunOS और Apple डार्विन (एक मामूली संशोधन के साथ) पर काम करता है।
यदि आप जो चाहते हैं वह आपके राउटर पर बाहरी आईपी पते को खोजने के लिए है, तो आप या तो राउटर से अपने वान पते के लिए पूछ सकते हैं, या बाहर के किसी व्यक्ति से इसे आपके लिए प्राप्त करने के लिए कह सकते हैं।
मैन्युअल तरीके से आप ऊपर दी गई किसी भी साइट को ब्राउज़ कर सकते हैं जो इनकमिंग अनुरोध के आईपी को वापस कर देगा।
स्वचालित तरीके से, आप कोशिश कर सकते हैं:
wget -q -O - http://www.ipaddressworld.com | grep '[0-9]\{1,3\}\.[0-9]\{1,3\}'\.
जो आपको उस पंक्ति को प्राप्त करेगा जिसमें http प्रतिक्रिया पर आईपी पता शामिल है, फिर उसे सीड, ऑक, आदि के साथ पार्स करें
आप बाहरी प्रदाताओं का उपयोग करके अपने बाहरी आईपी की जांच करने के लिए सिर्फ शेल का उपयोग कर सकते हैं
#!/bin/bash
TCP_HOST="checkmyip.com"
TCP_PORT=80
exec 5<>/dev/tcp/"${TCP_HOST}"/"${TCP_PORT}"
echo -e "GET / HTTP/1.0\nHOST:${TCP_HOST}\n" >&5
while read -r line
do
case "$line" in
*"Your local IP address is"* )
line="${line#*Your local IP address is }"
line=${line%%</p>*}
echo "Your ip is: $line"
exec >&5-
exit
;;
esac
done <&5
उत्पादन
lynx - dump http://www.whatismyip.com/ | grep -o '[0-9]। * \। [0-9]। * \ _। [0-9]। * \ _। [0-9]। * -m1
मैं यह करता हूँ। यह सिर्फ मुझे किसी भी तीसरे पक्ष की भागीदारी के बिना आईपी देता है ..
आईपी एड्र शो | grep eth0 | grep inet | tr -s "" | cut -f3 -d "" | कट -f1 -d "/"
यहां एक और विकल्प है जो होस्ट्स पर निर्भर करता है जो व्यवसाय गतिशील आईपी को प्रबंधित करने के आसपास हल करता है, बल्कि "सार्वजनिक सेवा" साइटें जो कि दूर जा सकती हैं या प्रारूप बदल सकती हैं।
1) अपने सर्वर को कई मुफ्त डायनामिक डीएनएस सेवाओं में से एक में पंजीकृत करें (जैसे no-ip.com) यह आपको xxx.no-ip.org जैसी DNS प्रविष्टि देगा।
2) सेवा के गतिशील अपडेट टूल को स्थापित करें (आईपी सेवा में परिवर्तन की रिपोर्ट करता है)।
एक स्क्रिप्ट में आईपी पता प्राप्त करने के लिए, बस करें:
$external_ip = `dig +short xxx.no-ip.org`
गतिशील आईपी बदल गया है और कुछ विन्यास प्रविष्टियों को बदलने की जरूरत है, यह जांचने के लिए क्रोन जॉब में उपयोग के लिए बढ़िया है।
OS X पर निजी और सार्वजनिक दोनों IP प्राप्त करने के लिए दो सरल समाधान दिए गए हैं (यदि आप LaunchBar का उपयोग करते हैं तो बोनस कोड के साथ)।
$ ipconfig getifaddr $1
# $1=en0 || en1 || en*
#!/bin/sh
title="$USER@$(HOSTNAME -s)"
text=$(ipconfig getifaddr en1)
open "x-launchbar:large-type?font-name=TerminalDosis-Light&string=$text&title=$title"
$ dig +time=1 +tries=1 +retry=1 +short myip.opendns.com @resolver1.opendns.com
# ||
$ curl $1
# $1=http://wtfismyip.com/text || http://ip-addr.es || http://icanhazip.com || http://wgetip.com || http://ident.me || http://ifconfig.me || https://shtuff.it/myip/short || http://curlmyip.com
#!/bin/sh
title="$USER@$(HOSTNAME -s)"
text=$(dig +time=1 +tries=1 +retry=1 +short myip.opendns.com @resolver1.opendns.com)
open "x-launchbar:large-type?font-name=TerminalDosis-Light&string=$text&title=$title"