जवाबों:
ऐसा करने के लिए कोई अंतर्निहित कमांड नहीं है। समस्या का एक हिस्सा यह है कि जब आप एक राउटर के माध्यम से इंटरनेट से जुड़े होते हैं, तो आपका नेटवर्क हार्डवेयर सीधे इंटरनेट से जुड़ा नहीं होता है, इसलिए आपके सिस्टम को विशेष रूप से एक आईपी नहीं सौंपा जाता है। यह संभव है कि आपके पास कुछ मामलों में कई बाहरी आईपी हो सकते हैं यदि आप एक रिवर्स प्रॉक्सी के पीछे हैं, क्योंकि कई कॉर्पोरेट नेटवर्क स्थापित हैं। आपकी सबसे अच्छी शर्त एक स्क्रिप्ट तैयार करना हो सकती है , जो whatismyip.org पर सवाल करती है , या यदि पहले से मौजूद है तो उसे खोजने की कोशिश कर रही है।
(एक टिप के रूप में, whatismyip.org अधिकांश अन्य समाधानों के लिए बेहतर है, क्योंकि यह आपके आईपी को सादे पाठ के रूप में लौटाता है - कोई शानदार पाठ, लिंक, चित्र या अन्य कचरा नहीं। यह कस्टम स्क्रिप्ट के अधिकांश की तुलना में कस्टम स्क्रिप्ट में उपयोग करना बहुत आसान होगा। अन्य IP- पता लगाने वाली साइटें।)
आप अपने सार्वजनिक आईपी का पता लगाने के लिए HTTP अनुरोध के बजाय एक DNS अनुरोध का उपयोग कर सकते हैं:
C:\> nslookup myip.opendns.com. resolver1.opendns.com
यह आपके आईपी पते के लिए resolver1.opendns.com
जादुई myip.opendns.com.
hostname को हल करने के लिए dns सर्वर का उपयोग करता है । (नोट: लुकअप पर अनुगामी खोज डोमेन को अपडाउन करने से रोकता है, जिससे गलत परिणाम मिल सकते हैं।).
यूनिक्स संस्करण:
$ dig +short myip.opendns.com @resolver1.opendns.com
http://curl.haxx.se/download.htmlcurl
से अपनी स्वयं की प्रति पकड़ो और फिर बस
curl "http://myexternalip.com/raw"
या शक्तियां का उपयोग करें:
$wc = new-object System.Net.WebClient
$wc.DownloadString("http://myexternalip.com/raw")
(अस्वीकरण: http://myexternalip.com मेरे द्वारा बनाया गया था)
यह अच्छी तरह से काम करता है, क्लाइंट कंप्यूटर कनेक्शन का निरीक्षण करते समय मैं इसका इस्तेमाल ज्यादातर पेसेक के साथ करता हूं।
nslookup myip.opendns.com resolver1.opendns.com
नाम से एक फ़ाइल बनाएं ip.vbs
और उसमें निम्नलिखित कॉपी करें:
Option Explicit
Dim http : Set http = CreateObject( "MSXML2.ServerXmlHttp" )
http.Open "GET", "http://icanhazip.com", False
http.Send
Wscript.Echo http.responseText 'or do whatever you want with it
Set http = Nothing
का उपयोग कर निष्पादित करें
C:\>cscript ip.vbs
जैसा कि निहंकल ने कहा , ऐसी साइट का चयन करना सबसे अच्छा है जो केवल आईपी लौटाए न कि एचटीएमएल + विज्ञापन इत्यादि।
(स्रोत: पूर्व में http://externip.com/about )
मैंने कुछ महीने पहले इस बैच की स्क्रिप्ट बनाई थी:
@echo off
:: WhatIsMyIP.cmd - returns public IP address
:: requires: wget.exe
if [%1]==[-h] goto :HELP
if [%1]==[--help] goto :HELP
if [%1]==[/?] goto :HELP
wget -q -O %temp%\MyIP http://www.whatismyip.com/automation/n09230945.asp
for /f "delims= " %%G in (%temp%\myip) do set PublicIP=%%G & del %temp%\MyIP
echo. & echo Your public IP address is %PublicIP% & echo.
if [%1]==[--clip] echo %PublicIP% | clip
goto :EOF
:HELP
echo. & echo Usage: whatismyip [--clip] & echo.
goto :EOF
:EOF
यह आपको क्लिपबोर्ड में आईपी एड्रेस डालने का विकल्प देता है और यह एक पर्यावरण चर सेट करता है - %PublicIP%
।
SIMPLER विधि:
अब, मैं इसके बजाय यह करता हूं:
curl icanhazip.com
या ...
curl icanhazip.com | clip
... क्लिपबोर्ड में वर्तमान सार्वजनिक आईपी पता प्राप्त करने के लिए।
आपको CURL की आवश्यकता है ।
पॉवर्सशेल 3.0 (विंडोज 7 डिफॉल्ट 2.0) के साथ आप उपयोग कर सकते हैं Invoke-WebRequest
IPv4 के लिए:
$tmp =Invoke-WebRequest -URI http://myip.dnsomatic.com/
$tmp.Content
IPv6 के लिए:
$tmp =Invoke-WebRequest -URI http://myexternalip.com/raw
$tmp.Content
यह आपको काम करने के लिए एक चर देगा यदि आपके पास कुछ विशिष्ट है जिसे आप इसके साथ करना चाहते हैं। मैं अपने राउटर के डायनेमिक आईपी को समय-समय पर अपलोड करने के लिए स्क्रिप्ट बनाने के लिए वास्तव में इसका उपयोग कर रहा हूं, नियमित अंतराल पर इसके लिए एक और मशीन परीक्षण संचार है, और फिर डीएनएस को नवीनतम आईपी के साथ अपडेट करें यदि यह बदल गया है तो मैं अपने गियर को कहीं से भी एक्सेस कर सकता हूं IP का लगातार पीछा करने के बजाय एक नाम का उपयोग करना।
और निश्चित रूप से - जैसे-जैसे साइटें बदलती हैं या उनके आउटपुट बदलते हैं, आप उसी के अनुसार इसे अपडेट करना चाहेंगे। :)
powershell.exe -noprofile -command ""
। एक अर्धविराम के साथ लाइन-ब्रेक को अलग करें ...
(Invoke-WebRequest -URI http://myip.dnsomatic.com).Content
इसे आज़माएं:
किसी भी प्रकार के बाहरी सॉफ़्टवेयर को स्थापित करने की आवश्यकता नहीं है।
@set @script=0 /*
@echo off
set @script=
cscript //nologo //e:jscript "%~dpnx0"
exit /b
*/
with (new ActiveXObject('Microsoft.XMLHTTP')) {
open('GET', 'http://internet.yandex.ru/', false);
send();
WScript.echo(responseText.match(/IPv4:\s(\d+\.){3}\d+/g));
}
बिना थर्ड पार्टी प्रोग्राम के विंडोज पर मुश्किल है क्योंकि टेलनेट डिफ़ॉल्ट रूप से आपूर्ति नहीं करता है, लेकिन, अगर यह वहां (एक्सपी) है या चालू (विंडोज विस्टा और ऊपर), बस टाइप करें:
telnet curlmyip.com 80
स्क्रीन फ्लैश होगा, और आपको बस एक कर्सर मिलेगा ... अगला प्रकार:
GET
बड़े अक्षरों में ... तब आप हेडर देखेंगे, उसके बाद आपके आईपी (और क्षमा करें, मैंने इसे धुंधला कर दिया है, बस दिखा रहा है कि यह कहां होगा!):
यहां अन्य उत्तर स्पष्ट रूप से काम करते हैं, लेकिन, मैं किसी ऐसी चीज पर सवाल रखने की कोशिश कर रहा हूं जिसका उपयोग किसी भी विंडो पर किया जा सकता है, तीसरे पक्ष के कार्यक्रमों के बिना!
Windows Vista और इसके बाद के संस्करण के लिए, आप आसानी से (और सुरक्षित रूप से) टेलनेट स्थापित कर सकते हैं Programs and features
, या निम्न कमांड का उपयोग कर सकते हैं:
pkgmgr /iu:”TelnetClient”
curlmyip.com
, लेकिन परीक्षण के साथ काम कर रहा है checkip.dyndns.org
।
आप ifcfg.me का उपयोग कर सकते हैं । यह कुछ आंतरिक कमांड का समर्थन करता है जो डिफ़ॉल्ट रूप से विंडोज़ के साथ आते हैं।
curl ifcfg.me
nslookup . ifcfg.me
telnet ifcfg.me
ftp ifcfg.me
finger @ifcfg.me
मैं एक समाधान चाहता था जो तृतीय पक्ष उपकरण स्थापित किए बिना विंडोज के लिए काम करता है । इसलिए मैंने पॉवरशेल विकल्प लिया , जिसमें हर घंटे एक स्क्रिप्ट चलनी चाहिए।
आप इस स्क्रिप्ट को नोटपैड के साथ बनाएँ
$wc = new-object System.Net.WebClient
$ip = $wc.DownloadString("http://myexternalip.com/raw")
$LogTime = Get-Date -Format "MM-dd-yyyy_hh-mm-ss"
Add-Content C:\Users\Administrator\Desktop\logs\IPLog.txt $LogTime
Add-Content C:\Users\Administrator\Desktop\logs\IPLog.txt "`n"
Add-Content C:\Users\Administrator\Desktop\logs\IPLog.txt $ip
Add-Content C:\Users\Administrator\Desktop\logs\IPLog.txt "`n"
और इसे getIP.ps1
कहीं और बचाओ । आप इस स्क्रिप्ट को सीधे शब्दशैली में कॉल कर सकते हैं या कार्य योजना का उपयोग कर सकते हैं जैसा मैंने किया था। यह निष्पादन के लिए आदेश है:
powershell -executionpolicy bypass -File C:\Users\Administrator\Desktop\getIP.ps1
कार्य शेड्यूलर में आप एक नया कार्य बनाते हैं। पर उत्प्रेरक आप उपयोग की स्थापना हर 1 दिन के लिए दैनिक और उन्नत विकल्प आप चुनते के तहत तुरंत की अवधि के लिए हर घंटे । सेटिंग्स में एक निर्धारित शुरुआत छूटने के बाद जितनी जल्दी हो सके रन टास्क की जांच करें । एक्शन के तहत आप उपरोक्त निष्पादन कोड पेस्ट करें।
पॉवरशेल कोड को ऑप्टिमाइज़ किया जा सकता है, क्योंकि मैं कोई पॉवरशेल गुरु नहीं हूं (इसके साथ मेरा पहली बार)। अब मैं परीक्षण कर रहा हूं कि क्या स्क्रिप्ट को हर घंटे कहा जाता है।
यहाँ मुझे पता चला है कि, सार्वजनिक आईपी पता प्राप्त करने के लिए इन-बिल्ट कमांड का उपयोग करना संभव है लेकिन आपके पास इंटरनेट तक पहुंच है
telnet icanhazip.com
या
telnet myip.gelma.net
icanhazip.com
मेरे लिए काम नहीं करेगा और दूसरा आईपीवी 6 ठीक से नहीं करता है। :)
यदि आप अपने राउटर के बाहरी आईपी को निकालने वाले HTML को पार्स कर सकते हैं तो ipchicken.com टेक्स्ट फॉर्मेट में आपके स्पष्ट आईपी पते को लौटा देगा। वैकल्पिक रूप से आप उन गतिशील डीएनएस एजेंटों में से एक को स्थापित कर सकते हैं जो आपके स्पष्ट बाहरी आईपी को एक एफक्यूडीएन में अपडेट करते हैं और फिर अपने वर्तमान आईपी नंबर को देखने के लिए अपने एफक्यूएनडी पर सिर्फ nslookup करते हैं। पहले डीएनडीएनएस की तरह फ्री हुआ करते थे लेकिन अब उनमें से अधिकांश को पेड सब्सक्रिप्शन अकाउंट की आवश्यकता होती है।