আমি কীভাবে শেল স্ক্রিপ্টে আমার বাহ্যিক আইপি ঠিকানা পেতে পারি?


273

শেল স্ক্রিপ্ট থেকে আমার বাহ্যিক আইপি ঠিকানাটি সন্ধান করতে হবে। এই মুহুর্তে আমি এই ফাংশনটি ব্যবহার করি:

myip () { 
    lwp-request -o text checkip.dyndns.org | awk '{ print $NF }'
}

কিন্তু এটা নির্ভর করে perl-libwww, perl-html-format, perl-html-treeইনস্টল করা নেই। আমি কীভাবে আমার বাহ্যিক আইপি পেতে পারি?


8
বাহ্যিক আইপি বলতে কী বোঝ? দুটি উত্তর এখনও পর্যন্ত HTTP ব্যবহার করে। প্রতিক্রিয়াটি আপনার আইএসপির প্রক্সি সার্ভারের আইপি হয়ে শেষ হতে পারে। (যা আপনি চান তা হতে পারে))
বিলপিজ

@ বিলপগ: আমি ন্যাট রাউটারের আইপি বলতে চাইছি
ইউজিন ইয়ারম্যাশ

তারপরে আপনার একটি হ'ল মাই-আইপি ওয়েব পরিষেবা দরকার যা এইচটিটিপিএস ব্যবহার করে। হায়, আমি কারওরকম জানি না।
বিলপিজ

1
@ বিলপ্প ipcheckit.com
গিলস

checkip.amazonaws.com সুপরিচিত সরবরাহকারী
arulraj.net

উত্তর:


441

আমি এটি সরাসরি কোনও ডিএনএস সার্ভার থেকে পাওয়ার পরামর্শ দিই।

সমস্ত নীচের অন্যান্য উত্তরগুলির মধ্যে বেশিরভাগই একটি রিমোট সার্ভারে HTTP- র মাধ্যমে জড়িত। তাদের মধ্যে কিছুটির আউটপুট পার্সিংয়ের প্রয়োজন, বা সার্ভারকে সরল পাঠ্যে প্রতিক্রিয়া জানানোর জন্য ব্যবহারকারী-এজেন্ট শিরোনামের উপর নির্ভরশীল। এগুলি বেশ ঘন ঘন পরিবর্তিত হয় (নীচে যান, তাদের নাম পরিবর্তন করুন, বিজ্ঞাপন দিন, আউটপুট ফর্ম্যাট পরিবর্তন করতে পারে)।

  1. ডিএনএস প্রতিক্রিয়া প্রোটোকল মানক করা হয়েছে (ফর্ম্যাটটি সামঞ্জস্যপূর্ণ থাকবে)।
  2. Orতিহাসিকভাবে , ডিএনএস পরিষেবাদিগুলি ( ওপেনডিএনএস , গুগল পাবলিক ডিএনএস , ..) অনেক বেশি সময় বেঁচে থাকে এবং আরও স্থিতিশীল, আরও স্কেলযোগ্য এবং সাধারণত যে কোনও নতুন হিপ হোয়াটস্মিআইপি ডটকম এইচটিটিপি সার্ভিস আজ গরম রয়েছে তার চেয়ে বেশি দেখাবে।
  3. এই পদ্ধতিটি সহজাতভাবে দ্রুত (এটি কেবল কয়েক মিলি সেকেন্ডের সাহায্যে!)।

ব্যবহার digসঙ্গে OpenDNS সমাধানকারী হিসাবে:

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

সম্ভবত এটি আপনার উপনাম bashrcতাই এটি মনে রাখা সহজ

alias wanip='dig @resolver1.opendns.com ANY myip.opendns.com +short'

সরল আইপি ঠিকানার সাথে সাড়া দেয়:

$ wanip
80.100.192.168 # or, 2606:4700:4700::1111

বাক্য গঠন

( Https://ss64.com/bash/dig.html থেকে সংক্ষিপ্ত ) :

usage:  dig [@global-dnsserver] [q-type] <hostname> <d-opt> [q-opt]

    q-type   one of (A, ANY, AAAA, TXT, MX, ...). Default: A.

    d-opt    ...
             +[no]short          (Display nothing except short form of answer)
             ...

    q-opt    one of:
             -4                  (use IPv4 query transport only)
             -6                  (use IPv6 query transport only)
             ...

ANYক্যোয়ারী টাইপটি হয় একটি AAAA অথবা একটি রেকর্ড ফেরৎ। আইপিভি 4 বা আইপিভি 6 সংযোগটি বিশেষভাবে পছন্দ করতে, সেই অনুসারে -4বা -6বিকল্পগুলি ব্যবহার করুন।

প্রতিক্রিয়াটি একটি আইপিভি 4 ঠিকানা হতে হবে, এর সাথে যে কোনওটিকে প্রতিস্থাপন করুন A; আইপিভি 6 এর জন্য, এটিকে প্রতিস্থাপন করুন AAAAote মনে রাখবেন যে এটি কেবল সংযোগের জন্য ব্যবহৃত ঠিকানাটিই ফেরত দিতে পারে। উদাহরণস্বরূপ, আইপিভি 6 এর সাথে সংযোগ করার সময়, এটি কোনও ঠিকানা ফেরত দিতে পারে না।

বিকল্প সার্ভার এবং উদাহরণ

ওপেনডিএনএস ছাড়াও, আকামাই এবং গুগল দ্বারা সরবরাহ করা অনুরূপ ডিএনএস পরিষেবা রয়েছে:

$ dig @ns1-1.akamaitech.net ANY whoami.akamai.net +short
80.100.192.168

$ dig @ns1.google.com TXT o-o.myaddr.l.google.com +short
"80.100.192.168"

উদাহরণস্বরূপ উপনাম যা নির্দিষ্টভাবে একটি আইপিভি 4 ঠিকানা অনুরোধ করে:

alias wanip4='dig @resolver1.opendns.com A myip.opendns.com +short -4'

$ wanip4
80.100.192.168

এবং আইপিভি 6 এর জন্য:

alias wanip6='dig @resolver1.opendns.com AAAA myip.opendns.com +short -6'

$ wanip6
2606:4700:4700::1111

সমস্যা সমাধান

কমান্ডটি যদি কোনও কারণে কাজ না করে, তবে প্রবাহ সরবরাহকারী, কমান্ড-লাইন সরঞ্জাম বা অন্য কোনও কিছুতে সমস্যা হতে পারে। এটি কেন কাজ করছে না তা বুঝতে সহায়তার +shortজন্য, ডিএনএস কোয়েরির বিশদটি প্রকাশ করার বিকল্প ছাড়াই কমান্ডটি চালান । উদাহরণ স্বরূপ:

$ dig @resolver1.opendns.com ANY myip.opendns.com

;; Got answer: ->>HEADER<<- opcode: QUERY, status: NOERROR

;; QUESTION SECTION:
;myip.opendns.com.      IN  ANY

;; ANSWER SECTION:
myip.opendns.com.   0   IN  AAAA    2606:4700:4700::1111

;; Query time: 4 msec
;; WHEN: Fri Apr 11 00:00:01 GMT 2011

18
আপনি ঠিক বলেছেন এটি খুব দ্রুত ..
রাহুল পাতিল

4
@ ক্রিংল এটি একটি দুর্দান্ত উত্তর। myip.opendns.comগুগলস পাবলিক ডিএনএস এর সমতুল্য কি আছে ?
কান্নান মোহন

12
আমি এটির চেয়ে 19x ডলার দ্রুত পেয়েছি curl http://canhazip.com। দেখুন askubuntu.com/a/427092/2273
আদম Monsen

3
এই পরিষ্কার Love / না নির্ভরতা সব অন্যান্য প্রস্তাবের তুলনায় অনেক ভালো কাছে, যদি না আপনি বন্দর 80 আবদ্ধ করছেন
binaryanomaly

5
দয়া করে নোট করুন যে কিছু ক্ষেত্রে NAT সরবরাহকারী রাউটারগুলি DNS প্রতিক্রিয়াগুলিও অনুবাদ করবে (আপনি wiki.nil.com/Network_address_translation_of_DNS_responses এ একবার দেখতে পারেন ); এক্ষেত্রে আপনার কিছু উত্তরের ফ্যালব্যাক হওয়া উচিত যা ডিএনএস ব্যতীত অন্য পদ্ধতির প্রস্তাব দেয়।
রাজওয়ান স্টেফনেস্কু

146

দ্রষ্টব্য: এটি সম্পর্কে বাহ্যিক IP ঠিকানা (এক যে ইন্টারনেটে সার্ভার দেখতে যখন আপনি তাদের সাথে সংযোগ) - যদি আপনি চান তাহলে অভ্যন্তরীণ IP ঠিকানা (এক যে আপনার নিজের কম্পিউটারে সংযোগ ব্যবহার করা হয়, যা আলাদা হতে পারে) দেখতে এই উত্তর

টিএল; ডিআর - 2015 এর দ্রুততম পদ্ধতি

ডিএনএস ব্যবহার করে দ্রুততম পদ্ধতি:

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

বা বহিরাগত ব্যবহার :

externalip dns

দ্রুততম HTTP ব্যবহার করে:

curl -s http://whatismyip.akamai.com/

বা বহিরাগত ব্যবহার:

externalip http

বৈধ শংসাপত্রের সাথে দ্রুত এইচটিটিপিএস ব্যবহার করা:

curl -s https://4.ifcfg.me/

বা বহিরাগত ব্যবহার:

externalip https

টেলনেট ব্যবহার:

সঙ্গে ncকমান্ড প্রয়োগ করুন:

nc 4.ifcfg.me 23 | grep IPv4 | cut -d' ' -f4

বা বহিরাগত ব্যবহার:

externalip telnet

সঙ্গে telnetকমান্ড প্রয়োগ করুন:

telnet 4.ifcfg.me 2>&1 | grep IPv4 | cut -d' ' -f4

এফটিপি ব্যবহার:

echo close | ftp 4.ifcfg.me | awk '{print $4; exit}'

বা বহিরাগত ব্যবহার:

externalip ftp

উপরের সমস্তগুলি আমার বহির্মুখী স্ক্রিপ্টটি ব্যবহার করে চালানো যেতে পারে :

externalip dns
externalip http
externalip https
externalip telnet
externalip ftp

এখন একটি দীর্ঘ গল্প ...

বাহ্যিক আইপি সরবরাহকারী বিভিন্ন সার্ভারের প্রচুর বিকল্প রয়েছে বিশেষত এখানে বা অন্য কোথাও পোস্ট করা HTTP এর মাধ্যমে।

তাদের কোনওটি অন্যের চেয়ে ভাল কিনা তা দেখার জন্য আমি একটি মানদণ্ড তৈরি করেছি এবং ফলাফলগুলি দেখে আমি অবাক হয়েছি। উদাহরণস্বরূপ, সর্বাধিক বহুল প্রস্তাবিত ifconfig.me আমার জন্য প্রায় সর্বদা সবচেয়ে ধীর ছিল, কখনও কখনও প্রতিক্রিয়া জানাতে বেশ কয়েক সেকেন্ড সময় নেয়। অনেকে এইচটিটিপিএসের উপর কাজ করেন না, বা কাজ করেন না তবে তাদের অবৈধ শংসাপত্র রয়েছে। কারও কারও কাছে অত্যন্ত বেমানান প্রতিক্রিয়া সময় রয়েছে।

benchmarks

এইচটিটিপি এবং এইচটিটিপিএস

এটি আমার বহিরাগত-বেঞ্চমার্ক স্ক্রিপ্টের উত্স যা আমি ব্যবহার করেছি:

এখানে উল্লিখিত কোন পরিষেবাগুলি ব্যবহারের জন্য উপযুক্ত তা আপনি নিজে এটি চালাতে পারেন:

wget https://raw.githubusercontent.com/rsp/scripts/master/externalip-benchmark
chmod a+x externalip-benchmark
./externalip-benchmark

আমার ফলাফল যা আমি ওয়ার্সা থেকে 2015-04-03 এ পেয়েছি - নির্দোষদের রক্ষার জন্য ঠিকানাগুলি পরিবর্তন করা হয়েছে:

সেরা HTTP প্রতিক্রিয়া সময়:

0.086s http://ip.tyk.nu/ - answer='172.31.133.7'
0.089s http://whatismyip.akamai.com/ - answer='172.31.133.7'
0.091s http://tnx.nl/ip - answer='172.31.133.7'
0.117s http://ifcfg.me/ - answer='172.31.133.7'
0.156s http://l2.io/ip - answer='172.31.133.7'
0.317s http://ip.appspot.com/ - answer='172.31.133.7'
0.336s http://ident.me/ - answer='172.31.133.7'
0.338s http://ipof.in/txt - answer='172.31.133.7'
0.347s http://icanhazip.com/ - answer='172.31.133.7'
0.496s http://curlmyip.com/ - answer='172.31.133.7'
0.527s http://wgetip.com/ - answer='172.31.133.7'
0.548s http://curlmyip.com/ - answer='172.31.133.7'
0.665s http://bot.whatismyipaddress.com/ - answer='172.31.133.7'
0.665s http://eth0.me/ - answer='172.31.133.7'
1.041s http://ifconfig.me/ - answer='172.31.133.7'
1.049s http://corz.org/ip - answer='172.31.133.7'
1.598s http://ipecho.net/plain - answer='172.31.133.7'

সেরা https প্রতিক্রিয়া সময়:

0.028s https://curlmyip.com/ - answer=''
0.028s https://curlmyip.com/ - answer=''
0.029s https://l2.io/ip - answer=''
0.029s https://tnx.nl/ip - answer=''
0.072s https://whatismyip.akamai.com/ - answer=''
0.113s https://ipecho.net/plain - answer=''
0.117s https://ident.me/ - answer=''
0.207s https://ip.tyk.nu/ - answer='172.31.133.7'
0.214s https://ipof.in/txt - answer='172.31.133.7'
0.259s https://ifcfg.me/ - answer='172.31.133.7'
0.289s https://corz.org/ip - answer=''
0.436s https://ip.appspot.com/ - answer='172.31.133.7'
0.448s https://bot.whatismyipaddress.com/ - answer=''
0.454s https://eth0.me/ - answer=''
0.673s https://icanhazip.com/ - answer='172.31.133.7'
5.255s https://ifconfig.me/ - answer=''
10.000s https://wgetip.com/ - answer=''

(দ্রষ্টব্য: খালি সামগ্রী সহ কিছু দ্রুত প্রতিক্রিয়া রয়েছে - সেগুলি অবৈধ))

সেরা গড় পিং সময়:

10.210 //whatismyip.akamai.com/
36.820 //tnx.nl/ip
37.169 //ip.tyk.nu/
39.412 //ipof.in/txt
40.967 //ident.me/
41.257 //ipecho.net/plain
43.918 //ifcfg.me/
45.720 //l2.io/ip
64.749 //ip.appspot.com/
123.412 //corz.org/ip
134.245 //wgetip.com/
157.997 //icanhazip.com/
161.613 //curlmyip.com/
162.100 //curlmyip.com/
268.734 //ifconfig.me/
999999 //bot.whatismyipaddress.com/
999999 //eth0.me/

আমস্টারডাম থেকে 2015-04-03 এ আমি যে ফলাফল পেয়েছি তা এখানে:

সেরা HTTP প্রতিক্রিয়া সময়:

0.021s http://ipecho.net/plain - answer='172.31.13.37'
0.027s http://tnx.nl/ip - answer='172.31.13.37'
0.035s http://whatismyip.akamai.com/ - answer='172.31.13.37'
0.039s http://ifcfg.me/ - answer='172.31.13.37'
0.045s http://l2.io/ip - answer='172.31.13.37'
0.142s http://ident.me/ - answer='172.31.13.37'
0.144s http://ipof.in/txt - answer='172.31.13.37'
0.150s http://ip.appspot.com/ - answer='172.31.13.37'
0.150s http://ip.tyk.nu/ - answer='172.31.13.37'
0.170s http://icanhazip.com/ - answer='172.31.13.37'
0.190s http://eth0.me/ - answer='172.31.13.37'
0.191s http://wgetip.com/ - answer='172.31.13.37'
0.301s http://curlmyip.com/ - answer='172.31.13.37'
0.330s http://bot.whatismyipaddress.com/ - answer='172.31.13.37'
0.343s http://curlmyip.com/ - answer='172.31.13.37'
0.485s http://corz.org/ip - answer='172.31.13.37'
3.549s http://ifconfig.me/ - answer='172.31.13.37'

সেরা https প্রতিক্রিয়া সময়:

0.004s https://curlmyip.com/ - answer=''
0.012s https://curlmyip.com/ - answer=''
0.012s https://tnx.nl/ip - answer=''
0.016s https://ipecho.net/plain - answer=''
0.071s https://whatismyip.akamai.com/ - answer=''
0.096s https://ifcfg.me/ - answer='172.31.13.37'
0.097s https://ident.me/ - answer=''
0.187s https://corz.org/ip - answer=''
0.187s https://ip.appspot.com/ - answer='172.31.13.37'
0.189s https://ip.tyk.nu/ - answer='172.31.13.37'
0.195s https://eth0.me/ - answer=''
0.253s https://l2.io/ip - answer=''
0.300s https://ipof.in/txt - answer='172.31.13.37'
0.324s https://bot.whatismyipaddress.com/ - answer=''
0.512s https://icanhazip.com/ - answer='172.31.13.37'
1.272s https://ifconfig.me/ - answer=''
10.002s https://wgetip.com/ - answer=''

সেরা গড় পিং সময়:

1.020 //ipecho.net/plain
1.087 //whatismyip.akamai.com/
5.011 //ip.appspot.com/
6.942 //ident.me/
7.017 //ipof.in/txt
8.209 //tnx.nl/ip
11.343 //ip.tyk.nu/
12.647 //ifcfg.me/
13.828 //l2.io/ip
81.642 //icanhazip.com/
85.447 //wgetip.com/
91.473 //corz.org/ip
102.569 //curlmyip.com/
102.627 //curlmyip.com/
247.052 //ifconfig.me/
999999 //bot.whatismyipaddress.com/
999999 //eth0.me/

(999999 পিংসের অর্থ 100% প্যাকেট ক্ষতি।

ডিএনএস

তুলনার জন্য এখানে অন্যান্য পদ্ধতিগুলি গ্রহণের সময় রয়েছে - ওয়ার্সা এবং আমস্টারডাম থেকে 2015-06-16 এ পরীক্ষিত।

ব্যবহার:

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

সাধারণত (বাস্তব প্রাচীর ঘড়ির সময়) এর সম্পর্কে লাগে:

  • ওয়ার্সা থেকে 0.035s
  • আমস্টারডাম থেকে 0.015 সেকেন্ড

এখানে চারটি সমাধানকারী রয়েছে যা এইভাবে ব্যবহার করা যেতে পারে:

  • resolver1.opendns.com
  • resolver2.opendns.com
  • resolver3.opendns.com
  • resolver4.opendns.com

তারা সকলেই ওয়ার্সা এবং আমস্টারডামে একই প্রতিক্রিয়া সময় দেয় তবে অন্য জায়গাগুলিতে এটি নাও হতে পারে।

208.67.222.222 ব্যবহার করে - এর ডোমেন নামের পরিবর্তে resolver1.opendns.com এর আইপি দ্রুততর:

  • ওয়ার্সা থেকে 0.023s
  • আমস্টারডাম থেকে 0.009s

তবে আইপি কখনও পরিবর্তিত হলে ভবিষ্যতে কাজ করতে পারে না (যদিও এটি কোনও পরিচিত ডিএনএস রিসলভারের পক্ষে সম্ভব নাও হতে পারে - সম্ভবত আমার আইপিটি আমার বহির্মুখী স্ক্রিপ্টে ব্যবহার করা উচিত - দয়া করে মন্তব্য করুন)।

টেলনেট

টেলনেট উইথ ncবা telnetকমান্ড (উপরে দেখুন) সাধারণত নেয়:

  • ওয়ার্সা থেকে 0.103s
  • আমস্টারডাম থেকে 0.035s

( কমান্ড ncএবং telnetকমান্ডের মধ্যে কোনও পার্থক্য নেই ))

FTP- র

  • ওয়ার্সা থেকে 0.104s
  • আমস্টারডাম থেকে 0.036s

ডোমেন নাম

সমস্ত পদ্ধতির দ্রুততর হবে (বিশেষত প্রথমবারের জন্য যখন চালানো হয়) যখন প্রদত্ত পরিষেবাদির ডোমেন নামগুলির পরিবর্তে আইপি ঠিকানা ব্যবহার করা হবে (এইচটিটিপি বাদে যা হোস্ট-ভিত্তিক ভার্চুয়াল সার্ভার ব্যবহার করতে পারে এবং খালি আইপি দিয়ে কাজ করে না - পরীক্ষিত নয়) তবে পরিষেবাগুলি আইপি ঠিকানা পরিবর্তন করলে কাজ করা বন্ধ করে দেবে যাতে এটি দ্রুততর তবে কম ভবিষ্যতের প্রমাণ হতে পারে।

মন্তব্য

আপনি যদি আপনার অবস্থান থেকে কিছু আকর্ষণীয় ফলাফল দেখতে পান বা আপনি যদি মনে করেন যে আমি বেছে নিয়েছি তাদের পরিবর্তে কিছু অন্যান্য হোস্টকে সুপারিশ করা উচিত তবে দয়া করে একটি মন্তব্য পোস্ট করুন। যদি কোনও গুরুত্বপূর্ণ পরিষেবা অনুপস্থিত থাকে তবে দয়া করে মন্তব্য করুন বা গিটহাবে একটি সমস্যা পোস্ট করুন। আমি সেরা পোস্টিং পরিষেবাগুলির বর্তমান পছন্দ নিয়ে এই পোস্টটি আপডেট রাখতে চাই।


2
ক্রিঙ্কলের উত্তরেরmyip.opendns.com মতো আপনি কি ডিএনএস পদ্ধতিটি বেঞ্চমার্ক করেছিলেন ? বর্তমানে মনে হচ্ছে যে এই পদ্ধতির জন্য অন্য কোনও সরবরাহকারীর সম্পর্কে অজানা থাকার কারণে এটি বিজয়-বাই-ডিফল্ট, তবে এটি অন্যান্য পদ্ধতির সাথে তুলনা করা এখনও কার্যকর হবে।
জেমস হাই হাই

@ জামেসে হাই পরামর্শ দেওয়ার জন্য ধন্যবাদ। আমি উত্তরে ডিএনএস এবং অন্যান্য পদ্ধতি (টেলনেট, এফটিপি) যুক্ত করেছি। দ্রুততম পদ্ধতিটি ডিএনএস বলে মনে হচ্ছে সমাধানের সরাসরি আইপি ঠিকানা (ডোমেন নামের পরিবর্তে) ব্যবহার করে using
আরএসপি

আপনার পাশাপাশি canhazip.com / canhazip.com যুক্ত করতে হবে (এইচটিটিপি এবং এইচটিটিপিএস) test
xxdesmus

আপনি আপনার তালিকায় myip.addr.space যুক্ত করতে পারেন । আমি নিজেই এটি তৈরি করেছি কারণ আমি অন্য সময়ে দেখা অন্য কারওর সাথে বিশেষভাবে সন্তুষ্ট ছিলাম না।
মাইকেল হ্যাম্পটন

কখনও কখনও আমি dig +short myip.opendns.com @resolver1.opendns.com(36.86.63.180), dig -4 @ns1-1.akamaitech.net -t a whoami.akamai.net +short(118.98.115.34), এবং curl http://canhazip.com(36.71.64.71) ব্যবহার করে বিভিন্ন ফলাফল পেয়েছি। কোনটি সঠিক তা আমি কীভাবে সিদ্ধান্ত নিতে পারি?
সুতানদিও

80
 curl -s http://whatismijnip.nl |cut -d " " -f 5

ডাচ কাজ করে একটি দিয়ে প্রতিস্থাপন সাইট।


3
+1 আমি হোয়াটস্মিআইপি ডট কম সম্পর্কে জানতাম, তবে হোয়াটস্মিআইপি.আর.ও নয়, এটি দুর্দান্ত।
জুলিয়ান

সে সম্পর্কে কখনই জানতাম না! দুর্দান্ত সাইট!
bbosak

2
@ ম্যাসিকস্যাউকি -sএই ক্ষেত্রে বিকল্পটি কি সত্যিই প্রয়োজনীয়? আমি আমার ফেডোরা 15 - বাশ 4.2.10 (1) এ এটি ছাড়া / দিয়ে চেষ্টা করেছি এবং এটি উভয় উপায়েই কাজ করেছে।
ztank1013

4
সি এল এলির মাধ্যমে আর কাজ করবে বলে মনে হচ্ছে না, তবে ওয়েব ব্রাউজার থেকে ওয়েবপৃষ্ঠায় যাওয়া কাজ করে। আমি ওপেনসুএস 12.1 x64 ব্যবহার করছি।
সল্টডন

5
whatismyip.comবাহ্যিক আইপি চেক করতে বিনামূল্যে পরিষেবা সরিয়ে দিয়েছে । সুতরাং, আমি আশঙ্কা করছি যে এটি আর সঠিক নয়। icanhazip.comএখনো কাজ করে.
দাসং

54

যেহেতু whatsmyip.org এবং ifconfig.me ইতিমধ্যে উল্লেখ করা হয়েছে:

curl -s icanhazip.com

4

1
এই দুটি সমর্থন আইপিভি 6।
জোশ লি

1
@ জোশলি, নোট করুন যে আইকানহাজিপ আইপিভি 6 সমর্থন করে। এছাড়াও, ওপিকে একটি নোট, এই সমস্ত curlসমাধান (বৈধ হলেও) এখনও একটি বাহ্যিক গ্রন্থাগারের উপর নির্ভর করে ( libcurl)।
HalosGhost

আর একটি: ifcfg.me
Eun

18

হোয়াটস্মিআইপি.আর.গির বিকল্প হিসাবে আপনি ifconfig.me ব্যবহার করতে পারেন ।

curl -s http://ifconfig.me

এছাড়াও ifconfig.me এর কিছু অতিরিক্ত ফাংশনাল রয়েছে। আপনি কী আরও তথ্য পেতে পারেন তা জানতে ওয়েবসাইটটি ভিজিট করুন।


5
এটি অত্যন্ত ধীর । আমি প্রায়শই 30 সেকেন্ডেরও বেশি সময় সাড়া পাই, কখনও কখনও এক মিনিটেরও বেশি! কখনও কখনও এটি আধ সেকেন্ড (যা এখনও অনেকটা), এবং তারপরে এটি 15 সেকেন্ড বা তার বেশি। এটি বিভিন্ন অবস্থান থেকে পরীক্ষা করা হয়। আরও তথ্য এবং মানদণ্ডের জন্য আমার উত্তর
আরএসপি

15
wget -O - -q http://whatismyip.org/

3
আমি আমার আইপিটি <img src='ipimg.php'/>
এমনভাবে

এটি কিছু শালীন প্রচুর রেগেক্স ম্যাজিকের সাথে কাজ করে পেয়েছি তবে এটি সহজ ছিল না। আপনি যদি এই পরিষেবাটি ব্যবহার করার জন্য জোর দিয়ে থাকেন তবে সেই লাইনটি কোনও স্ক্রিপ্টে $ curl -s http://whatismyip.org | grep -o '\([[:digit:]]\{1,3\}\.\)\{3\}[[:digit:]]\{1,3\}'
আবদ্ধ

13

আমাজন এডাব্লুএস

curl https://checkip.amazonaws.com

নমুনা আউটপুট:

123.123.123.123

আমি এটা পছন্দ করি কারণ:

  • এটি কেবল প্লেইনটেক্সট আইপি দেয়, অন্য কিছুই না
  • এটি কোনও পরিচিত সরবরাহকারীর কাছ থেকে যা শীঘ্রই যে কোনও সময় অফলাইনে যাওয়ার সম্ভাবনা নেই

9

আমি কার্লমিপ ডট কম ব্যবহার করতে পছন্দ করি এটি এতটা সহজ:

curl curlmyip.com

এটি মনে রাখা সংক্ষিপ্ত এবং সহজ।


bashওপি'র অভিপ্রায় ব্যবহারের জন্য , আপনি -sঅন্যান্য উত্তরে উল্লিখিত বিকল্পটি ছাড়া করতে পারবেন না ।
সার্জ স্ট্রোব্যান্ড

3
@ সার্জস্ট্রোব্যাণ্ড্ট হ্যাঁ আপনি পারবেন। সমস্ত -sসুইচ এটি নীরব মোডে চালানো হয়, অর্থাত্‍। ত্রুটি বার্তা প্রদর্শিত হবে না। সুতরাং এটি কীভাবে তার স্ক্রিপ্টটি ত্রুটিগুলি পরিচালনা করতে চায় তা নেমে আসে। কমান্ড নিজেই কোনও আইপি ঠিকানা হিসাবে ব্যবহারের মতো নির্ভরযোগ্যতার সাথে ফিরে আসবে -s
গ্যারেট ফোগারলি

1
এখনও অবধি, একাধিক পরীক্ষায় এই সাইটটি সবচেয়ে নির্ভরযোগ্য ছিল।
আমোস শাপিরা

9
curl ident.me

অথবা

curl ifconfig.me

অথবা

curl tnx.nl/ip

অথবা

curl ipecho.net/plain

অথবা

curl ip.appspot.com

অথবা

curl whatismyip.akamai.com

অথবা

curl icanhazip.com

অথবা

curl wgetip.com

অথবা

curl ip.tyk.nu

অথবা

curl curlmyip.com

অথবা

curl corz.org/ip

অথবা

curl bot.whatismyipaddress.com

উল্লেখ


6
netcat icanhazip.com 80 <<< $'GET / HTTP/1.1\nHost: icanhazip.com\n\n' | tail -n1

এখানে ফাঁকা আউটপুট, যদিও সাইটটি কাজ করে। কোন ধারণা কেন? আমি প্রক্সির পিছনে আছি, যদি এটি প্রাসঙ্গিক হয় তবে wget icanhazip.comকাজ করে।
l0b0

@ l0b0 | tail -n1অংশটি বাদ দেওয়ার চেষ্টা করুন এবং প্রক্সি থেকে আপনি কী পান তা দেখুন
ইউজিন ইয়ারম্যাশ

কিছুই, শুধু বাহিরের কোড 1. পূর্বোক্ত জন্য netcat icanhazip.com 80। দেখে মনে হচ্ছে এটি এড়িয়ে যায় $http_proxyএবং বন্ধুরা, কারণ প্রক্সি এবং পোর্ট সুনির্দিষ্ট করে -xকেবলমাত্র একটি ঝুলন্ত প্রক্রিয়াটির ফলস্বরূপ।
l0b0

@ l0b0: netcat proxy 3128 <<<$'GET http://icanhazip.com/ HTTP/1.0\n\n' | tail -n 1একটি বেসিক HTTP প্রক্সি জন্য (ধরে নিলে এটি পোর্টে 3128 চলছে)। আপনি প্রকৃতপক্ষে প্রক্সিটির আইপি ঠিকানাটি ফিরে পাবেন।
ট্রিপলি

1
HTTP 1.0 এর Host:অনুরোধ শিরোনাম নেই - নাম ভিত্তিক ভার্চুয়াল হোস্টিং এইচটিটিপি 1.1 এর অন্যতম প্রধান উন্নতি ছিল। হয় HTTP / 1.1 নির্দিষ্ট করার জন্য অনুরোধটি পরিবর্তন করুন, বা হোস্ট শিরোনামটি সরিয়ে দিন (আমি পূর্ববর্তীটির প্রস্তাব দিই)।
একটি সিভিএন

4

যদি এই সমস্ত পরামর্শগুলি পড়ার পরে আপনি আরও বেশি পড়তে চান তবে এখানে একটি যুক্তিযুক্ত ওভার ইঞ্জিনিয়ারড বাশ স্ক্রিপ্ট।

এটিতে ডিএনএস এবং এইচটিটিপি সার্ভারগুলির একটি তালিকা রয়েছে যা ফেব্রুয়ারী 2017 পর্যন্ত দুর্দান্ত কাজ করে বলে মনে হচ্ছে।

আপনার যদি থাকে dig, তবে এটি প্রথমে ডিএনএসকে চেষ্টা করে যা প্রায় বিভিন্ন মানের এইচটিপিপি পরিষেবাগুলির ক্রমতর আকারের একটি অর্ডার।

এটি যে প্রথম জবাব পায় তা থেকে এটি প্রস্থান করে।

যদি আপনার না থাকে digবা সমস্ত ডিএনএস সার্ভার ব্যর্থ হয় তবে এটি কোনও উত্তর না পাওয়া পর্যন্ত এটি HTTP পরিষেবাদির চেষ্টা করে।

সার্ভারগুলি বর্ণানুক্রমিকভাবে তালিকাভুক্ত করা হয় তবে সর্বদা একই ব্যবহারটি এড়াতে ব্যবহারের আগে পরিবর্তিত হয়।

#!/bin/bash

## Get my external IP

timeout=2   # seconds to wait for a reply before trying next server
verbose=1   # prints which server was used to STDERR

dnslist=(
    "dig +short            myip.opendns.com        @resolver1.opendns.com"
    "dig +short            myip.opendns.com        @resolver2.opendns.com"
    "dig +short            myip.opendns.com        @resolver3.opendns.com"
    "dig +short            myip.opendns.com        @resolver4.opendns.com"
    "dig +short    -t txt  o-o.myaddr.l.google.com @ns1.google.com"
    "dig +short -4 -t a    whoami.akamai.net       @ns1-1.akamaitech.net"
    "dig +short            whoami.akamai.net       @ns1-1.akamaitech.net"
)

httplist=(
    4.ifcfg.me
    alma.ch/myip.cgi
    api.infoip.io/ip
    api.ipify.org
    bot.whatismyipaddress.com
    canhazip.com
    checkip.amazonaws.com
    eth0.me
    icanhazip.com
    ident.me
    ipecho.net/plain
    ipinfo.io/ip
    ipof.in/txt
    ip.tyk.nu
    l2.io/ip
    smart-ip.net/myip
    tnx.nl/ip
    wgetip.com
    whatismyip.akamai.com
)



# function to shuffle the global array "array"
shuffle() {
   local i tmp size max rand
   size=${#array[*]}
   max=$(( 32768 / size * size ))
   for ((i=size-1; i>0; i--)); do
      while (( (rand=$RANDOM) >= max )); do :; done
      rand=$(( rand % (i+1) ))
      tmp=${array[i]} array[i]=${array[rand]} array[rand]=$tmp
   done
}


## if we have dig and a list of dns methods, try that first
if hash dig 2>/dev/null && [ ${#dnslist[*]} -gt 0 ]; then
    eval array=( \"\${dnslist[@]}\" )
    shuffle

    for cmd in "${array[@]}"; do
        [ "$verbose" == 1 ] && echo Trying: $cmd 1>&2
        ip=$(timeout $timeout $cmd)
        if [ -n "$ip" ]; then
            echo $ip
            exit
        fi
    done
fi


# if we haven't succeeded with DNS, try HTTP

if [ ${#httplist[*]} == 0 ]; then
    echo "No hosts in httplist array!" >&2
    exit 1
fi

# use curl or wget, depending on which one we find
curl_or_wget=$(if hash curl 2>/dev/null; then echo "curl -s"; elif hash wget 2>/dev/null; then echo "wget -qO-"; fi);

if [ -z "$curl_or_wget" ]; then
    echo "Neither curl nor wget found. Cannot use http method." >&2
    exit 1
fi

eval array=( \"\${httplist[@]}\" )
shuffle

for url in "${array[@]}"; do
    [ "$verbose" == 1 ] && echo Trying: $curl_or_wget  "$url" 1>&2
    ip=$(timeout $timeout $curl_or_wget "$url")
    if [ -n "$ip" ]; then
        echo $ip
        exit
    fi
done

নমুনা ব্যবহার (আমি স্ক্রিপ্ট বলেছি myip):

$ myip
Trying: dig +short -t txt o-o.myaddr.l.google.com @ns1.google.com
"151.101.65.69"

$ ip=$(myip); echo "IP = '$ip'"
Trying: dig +short myip.opendns.com @resolver1.opendns.com
IP = '151.101.65.69'

verboseব্যবহৃত সার্ভারটি মুদ্রণ এড়ানোর জন্য স্ক্রিপ্টের শীর্ষে চলকটি মন্তব্য করুন Comment

আপডেট: এই স্ক্রিপ্টটি এখন গিথুব এও রয়েছে যেখানে প্রয়োজন হলে এটি আপডেট করতে পারি:
https://github.com/mivk/myip


3

যদি আপনি কিছু সম্ভাব্য সমস্যাগুলি এড়াতে এইচটিটিপিএস ব্যবহার করতে চান:

_result=$(wget -qO- https://ipcheckit.com/)
_result="${_result##*Your IP address is<br><b>}"
printf '%s\n' "${_result%%</b></p>*}"

2
সম্ভবত আপনি এখানে কীভাবে এড়াচ্ছেন এমন সম্ভাব্য সমস্যাগুলি কী তা ব্যাখ্যা করতে পারেন?
কালেব

Ipcheckit.com ডোমেনটি স্পষ্টতই বিক্রয়ের জন্য এবং আইপি অ্যাড্রেস প্রদর্শন পরিষেবাটি আর হোস্ট করে না।
manatwork

আহ, লেখার স্ক্রিপ্টগুলির ক্ষতিগুলি :)
Рахматуллин Рахматуллин

@ ক্রিস ডাউন ডাউন কৌশলটি এখনও বৈধ, আপনার এটি ব্যবহারের জন্য কেবল অন্য একটি এসএসএল সক্ষম সাইট দরকার।
কালেব

3

এখানে আরও একটি বিকল্প রয়েছে যা হোস্টগুলির উপর নির্ভর করে যারা ব্যবসায়ের গতিশীল আইপি পরিচালনার আশেপাশে সমাধান করে যে "পাবলিক সার্ভিস" সাইটগুলি চলে যেতে পারে বা ফর্ম্যাট পরিবর্তন করতে পারে।

  1. অনেকগুলি বিনামূল্যে গতিশীল ডিএনএস পরিষেবাদিগুলির মধ্যে একটিতে আপনার সার্ভারটি নিবন্ধন করুন (উদাঃ no-ip.com) এটি আপনাকে xxx.no-ip.org এর মতো একটি ডিএনএস এন্ট্রি দেবে।
  2. পরিষেবার গতিশীল আপডেট সরঞ্জাম ইনস্টল করুন (পরিষেবাতে আইপি পরিবর্তনগুলি প্রতিবেদন করে)।

স্ক্রিপ্টে আইপি ঠিকানা পেতে, কেবল এটি করুন:

external_ip=`dig +short xxx.no-ip.org`

ডায়নামিক আইপি পরিবর্তন হয়েছে এবং কিছু কনফিগারেশন এন্ট্রি পরিবর্তন করা দরকার কিনা তা পরীক্ষা করতে ক্রোন জব ব্যবহারের জন্য দুর্দান্ত।


3

এটি সর্বদা আমার পক্ষে কাজ করে, আমি আমার আইপি ঠিকানা পেতে এটি আমার কঙ্কিতে ব্যবহার করি।

wget -q -O - checkip.dyndns.org | sed -e 's/[^[:digit:]\|.]//g'

+1 তথাপি এতটা আনাড়ি হওয়া সত্ত্বেও, এই পন্থাটি আমার জন্য বেশ কয়েকবার জীবন রক্ষাকারী হয়েছে। কারণ ইন্টারনেট ডাব্লুডাব্লুডাব্লু নয় । আপনি ইন্টারনেট অ্যাক্সেস থাকতে পারে, কিন্তু আপনি (সার্ভার আসরে সাধারণত) একটি নন- GUI কনসোলে দণ্ডপ্রাপ্ত হতে পারে এবং এই ক্ষেত্রে এটি মনে রাখা গুরুত্বপূর্ণ হৃদয় দ্বারা checkIP সেবা URL গুলির একটি। এবং যেমন এটি বেশ সাধারণ, এটি কেবল আপাতদৃষ্টিতে সংকলিত, কারণ আপনি ডিনডএনএসের একটির চেয়ে বেশি মনে রাখবেন amazonaws। এটি হ'ল, যদি এর জন্য গুগল করার কোনও উপায় না থাকে। (এমনকি না lynx)।
সিনট্যাক্সারোর

3

যেহেতু আমি সংযোগ বা পরিষেবার উপর নির্ভর করি না, তাই আমি নিম্নলিখিত কোডগুলি ব্যবহার করি, যা বিভিন্ন পরিষেবা ব্যবহার করে আইপি পাওয়ার চেষ্টা করে (আরও সংযোজনে নির্দ্বিধায়):

# Get my ip address and put in a file
declare -a arr=("ipecho.net/plain" "ident.me" "tnx.nl/ip" "ip.appspot.com" "https://shtuff.it/myip/short/")
IP=$(curl -s --retry 3 --retry-delay 10 ipecho.net/plain)

while [ -z "$IP" ] # If no IP found yet, keep trying!
do
    sleep 30
    IP=$(curl -s --retry 3 --retry-delay 10 ${arr[$((  RANDOM % ${#arr[@]}  ))]})  
done

echo -n "$IP" >  /root/clientIP.txt #puts ip address in clientIP.txt
echo "Our address is $IP" 

আরও দৃust়তা যুক্ত করার জন্য (যেমন কোনও পরিষেবাগুলির ফর্ম্যাট পরিবর্তন হয়), আপনি $IPনীচের ফাংশনটি ব্যবহার করে এটি বৈধ আইপি কিনা তা পরীক্ষা করতে পারেন :

# Verify that the parameter passed is an IP Address:
# http://zindilis.com/blog/2013/05/10/bash-check-that-string-is-ip.html
# @Author: Marios Zindilis
# @License: Creative Commons Attribution-ShareAlike 4.0 International License.
# @Date: 2013-05-10
function is_IP() {
if [ `echo $1 | grep -o '\.' | wc -l` -ne 3 ]; then
        echo "Parameter '$1' does not look like an IP Address (does not contain 3 dots).";
        exit 1;
elif [ `echo $1 | tr '.' ' ' | wc -w` -ne 4 ]; then
        echo "Parameter '$1' does not look like an IP Address (does not contain 4 octets).";
        exit 1;
else
        for OCTET in `echo $1 | tr '.' ' '`; do
                if ! [[ $OCTET =~ ^[0-9]+$ ]]; then
                        echo "Parameter '$1' does not look like in IP Address (octet '$OCTET' is not numeric).";
                        exit 1;
                elif [[ $OCTET -lt 0 || $OCTET -gt 255 ]]; then
                        echo "Parameter '$1' does not look like in IP Address (octet '$OCTET' in not in range 0-255).";
                        exit 1;
                fi
        done
fi

return 0;
}

3

ifcfg.me সমর্থন করে:

curl ifcfg.me
nslookup . ifcfg.me
telnet ifcfg.me
ftp ifcfg.me
finger @ifcfg.me

আইপিভি 4 এবং আইপিভি 6, কার্ল সহ আরও বেশি স্টাফ: ifcfg.me/?


কেমন করে nslookupপদ্ধতি সঙ্গে সম্পর্কযুক্ত digপদ্ধতি Krinkle এর উত্তর ? তারা দুজনই ডিএনএস ব্যবহার করে, তাই না? সুতরাং আমি কি এখানে এখানে digএকই ডিএনএস রেকর্ডটি পুনরুদ্ধার করতে কিছু বিকল্প পাস করতে পারি nslookup?
জেমস হাই হাই

হ্যাঁ আপনি ব্যবহার করতে পারে dig +short . @ifcfg.meযদি আপনি চান
Eun

2

আমি আমার পরিবারের জন্য একটি ক্লাউড পরিষেবা চালিয়েছি এবং আমি এই দ্রুত স্ক্রিপ্টটি আমি cronপ্রতি সকালে 5 টায় চালাতে পারি কারণ আমি সস্তা যে কোনও স্ট্যাটিক আইপি কিনে না।

এটি পাবলিক আইপি ধরেছে এবং এটি আমার ব্যবহারকারীদের ইমেল করে। হাইপারলিংক ফর্ম্যাটে এটি ইমেল তৈরি করেছে যাতে আমার মাকে পোর্ট বা কোনও কিছু টাইপ করতে না হয়। হতে পারে অন্য কেউ এটি ব্যবহার করতে পারেন।

#!/bin/bash
ipvariable=$(wget http://ipecho.net/plain -O - -q);

echo "Today the location is http://$ipvariable:123456/foldertheyreach" | mail -s   "From your friendly cloud service provider" user1@someemail.com, user2@ect.com

1

এটি পপআপ উইন্ডোতে বর্তমান আইপি ঠিকানাটি প্রদর্শন করবে:

zenity --info --text "$(curl -s icanhazip.com)"

1

আমার একটি পরিষেবা সেটআপ হয়েছে যা আইপি ঠিকানাটি জেএসএন / এক্সএমএল বা সাধারণ পাঠ্য হিসাবে ফিরিয়ে দেয়। আপনি এখানে তাদের খুঁজে পেতে পারেন

http://ipof.in/txt

/ Json এবং / xML এর সাথে একই URL আপনাকে অন্যান্য ফর্ম্যাটও দেবে

আপনি যদি এইচটিটিপিএস চান তবে আপনি https উপসর্গ সহ একই URL গুলি ব্যবহার করতে পারেন। সুবিধাটি হ'ল আপনি যদি কোনও ওয়াইফাইতে থাকেন তবে আপনি পাবলিক ঠিকানা পাবেন।

সুতরাং একটি সাধারণ ওরফে মাইপ = "কার্ল https://ipof.in/txt " আপনার আইপি পাবে


1

বিকল্পভাবে আপনি STUN ব্যবহার করতে পারেন যা স্বয়ংক্রিয়ভাবে এই প্রশ্নের উত্তর দেওয়ার জন্য উদ্ভাবিত হয়েছিল এবং ইন্টারনেট যোগাযোগে যেমন এসআইপি এবং ওয়েবআরটিসি দ্বারা ব্যাপকভাবে ব্যবহৃত হয় ।

স্টানক্লিয়েন্ট ব্যবহার করে (ডিবিয়ান / উবুন্টু ডো তে apt-get install stuntman-client) সহজভাবে করুন:

$ 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স্থানীয় নেটে আপনার মেশিনের আইপি ঠিকানাটি কোথায় এবং W.X.Y.Zওয়েবসাইটগুলির মতো আইপি অ্যাড্রেস সার্ভারগুলি বাইরে থেকে (এবং আপনি যেটিকে সন্ধান করছেন) দেখুন। sedআপনি ব্যবহার করে উপরের আউটপুটটিকে কেবলমাত্র একটি আইপি ঠিকানায় হ্রাস করতে পারে:

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

বেসিক কমান্ড লাইন সরঞ্জামগুলি ব্যতীত অন্য কিছুই ব্যবহার না করে স্টুউন দেখার জন্য আসকউবুন্টুতে আমার উত্তর দেখুন (উত্পাদন ব্যবহারের জন্য নয়, একটি মজাদার অনুশীলন হিসাবে চিহ্নিত)।


0

ডাব্লু 3 এম প্লেটেক্সট-ব্রাউজার ব্যাশের জন্য দুর্দান্ত। আপনি উত্তরটি নিম্নরূপটি ব্যবহার করতে grepএবং tailসংক্ষিপ্ত করতে করতে পারেন :

w3m -no-cookie -dump "http://www.whatismyip.com/" | grep -A 1 -m 1 "Your IP:" | tail -n 1


0

এমনকি ডিএনএস ঠিকানাগুলি অনুবাদ করে কোনও NAT রাউটারের পিছনে একটি ডিএনএস অনুরোধ ব্যবহার করে, এটি কাজ করতে পারে:

$ dig +short -t txt o-o.myaddr.l.google.com @ns1.google.com | cut -d'"' -f2
x.y.z.t

বা, আপনি পরিবর্তে HTTP অনুরোধ পদ্ধতি ব্যবহার করতে পারেন:

$ curl -s ipinfo.io/ip
x.y.z.t

1
কেন আপনি একে অপরের উপরে সুপারিশ করবেন?
রোয়াইমা

@roaima আপনি ঠিক বলেছেন, এটি প্রতিটি ব্যবহারকারীর সিদ্ধান্ত নিতে হবে।
SebMa
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.