คำสั่ง Windows ที่ส่งคืน IP ภายนอก


58

มีคำสั่งที่ฉันสามารถค้นหา IP ภายนอกของเราเตอร์ของฉันหรือ NAT \ DSL เราเตอร์ของฉัน ฯลฯ ไม่จำเป็นต้องไปที่ whatsmyip.net หรือที่คล้ายกัน


คำตอบ:


14

ไม่มีคำสั่งในตัวให้ทำเช่นนี้ ส่วนหนึ่งของปัญหาคือเมื่อคุณเชื่อมต่ออินเทอร์เน็ตผ่านเราเตอร์ฮาร์ดแวร์เครือข่ายของคุณไม่ได้เชื่อมต่อโดยตรงกับอินเทอร์เน็ตดังนั้นระบบของคุณไม่ได้กำหนด IP โดยเฉพาะ อาจเป็นไปได้ที่คุณอาจมี IP ภายนอกหลายตัวในบางกรณีหากคุณอยู่หลังพร็อกซีย้อนกลับเนื่องจากมีการตั้งค่าเครือข่ายขององค์กรจำนวนมาก ทางออกที่ดีที่สุดของคุณอาจจะสร้างสคริปต์ที่ค้นหาwhatismyip.orgหรือพยายามค้นหาหากมีอยู่แล้ว

whatismyip.org นั้นดีกว่าโซลูชันอื่น ๆ ส่วนใหญ่เนื่องจากมันเพิ่งส่งคืน IP ของคุณเป็นข้อความธรรมดา - ไม่มีข้อความฟุ่มเฟือยลิงค์รูปภาพหรือขยะอื่น ๆ มันจะง่ายกว่าที่จะใช้ในสคริปต์ที่กำหนดเองมากกว่าส่วนใหญ่ของ ไซต์ตรวจจับ IP อื่น ๆ )


6
พวกเขาเปลี่ยน whatismyip.org น่าเสียดาย ที่อยู่ IP ถูกส่งคืนเป็นรูปภาพทำให้ไม่มีประโยชน์ในการเขียนสคริปต์ เว็บไซต์ "icanhazip.com" ที่กล่าวถึงด้านล่างใช้งานได้
onnodb

ยานเดกซ์ทำงานได้ตรวจสอบสคริปต์ที่โพสต์ด้านล่าง
Filipe YaBa Polido

ทำงานคำสั่งดั้งเดิมจากด้านล่าง superuser.com/a/722397/216374
PsychoData

107

คุณสามารถใช้คำขอ DNS แทนคำขอ HTTP เพื่อค้นหา IP สาธารณะของคุณ:

C:\> nslookup myip.opendns.com. resolver1.opendns.com

จะใช้resolver1.opendns.comเซิร์ฟเวอร์ DNS เพื่อแก้ไขmyip.opendns.com.ชื่อโฮสต์ขลังไปยังที่อยู่ IP ของคุณ (หมายเหตุ: การติดตามส่วนท้าย.ในการค้นหาป้องกันไม่ให้โดเมนการค้นหาต่อท้ายซึ่งสามารถให้ผลลัพธ์ที่ไม่ถูกต้อง)

รุ่น Unix:

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

1
ทำงานเหมือนจับใจ
BK

ยอดเยี่ยมทำงานได้โดยไม่ต้องติดตั้งอะไรเลย
ericosg

ไม่ทำงานสำหรับฉันอีกต่อไปในเดือนพฤศจิกายน 2017 บน Windows 10 PowerShell คำตอบจาก Bradley Forney ทำงานได้
เจสัน

ยังคงทำงานให้ฉัน (Windows 10, Dec 2017) ฉลาดมาก @jfs, OpenDNS ทำเอกสารนี้ที่ไหนที่คุณค้นพบมันได้อย่างไร?
Alex KeySmith

4
นี่ควรเป็นคำตอบที่ได้รับการยอมรับเนื่องจากมีคำสั่งจริงและใช้งานได้ คำตอบที่ยอมรับได้บอกว่าไม่มีคำสั่ง (ซึ่งพิสูจน์แล้วว่าเป็นเท็จ) และแนะนำให้ใช้สคริปต์โดยไม่ให้ทิศทางต่อไป
CyberClaw

30

คว้าสำเนาของคุณเองcurlจากhttp://curl.haxx.se/download.htmlจากนั้นเพียงแค่

curl "http://myexternalip.com/raw"

หรือใช้ PowerShell:

$wc = new-object System.Net.WebClient
$wc.DownloadString("http://myexternalip.com/raw")

(ข้อจำกัดความรับผิดชอบ: http://myexternalip.comถูกสร้างโดยฉัน)


มีเพียงที่อยู่ IPv6 เท่านั้น มีวิธีรับที่อยู่ IPv4 หรือไม่
tim11g

ฉันอ่านต่อและพบตัวอย่าง IPv4 / IPv6 ด้านล่างสำหรับ Powershell เป็นไปได้ที่จะได้รับ IPv4 กับ CURL เช่นนี้ "C:> curl" myip.dnsomatic.com "
tim11g

7

มันใช้งานได้ดีฉันใช้มันเป็นส่วนใหญ่กับ psexec เมื่อตรวจสอบการเชื่อมต่อคอมพิวเตอร์ไคลเอนต์

nslookup myip.opendns.com resolver1.opendns.com

6

สร้างชื่อไฟล์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

ดังที่ระบุไว้ว่าเมิร์จ, เป็นการดีที่สุดที่จะเลือกเว็บไซต์ที่แสดง IP และไม่ใช่โฆษณาแบบ HTML +, เป็นต้นเช่น:

(ที่มา: http://externip.com/aboutเดิม)


5

ฉันสร้างสคริปต์ชุดงานนี้ขึ้นเมื่อสองสามเดือนที่ผ่านมา

@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

มันทำให้คุณมีตัวเลือกที่จะใส่ที่อยู่ IP ในคลิปบอร์ดและจะกำหนดตัวแปรสิ่งแวดล้อม %PublicIP%-


วิธีการอย่างง่าย:

ตอนนี้ฉันเพิ่งทำสิ่งนี้แทน:

curl icanhazip.com

หรือ...

curl icanhazip.com | clip

... เพื่อรับที่อยู่ IP สาธารณะปัจจุบันลงในคลิปบอร์ด

คุณต้องม้วน


1
สคริปต์จาก paradroid ทำงานได้ดี แต่ whatsmyip ได้ย้ายหน้าเว็บไปที่automation.whatismyip.com/n09230945.aspหากคุณเปลี่ยนมาใช้วิธีนี้มันทำงานได้อย่างสมบูรณ์แบบ

5

ด้วย Powershell 3.0 (ค่าเริ่มต้นของ Windows 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 ของเราเตอร์เป็นระยะ ๆ มีการทดสอบการสื่อสารด้วยเครื่องอื่นเป็นระยะ ๆ จากนั้นอัปเดต DNS ด้วย IP ล่าสุดหากมีการเปลี่ยนแปลงเพื่อให้ฉันสามารถเข้าถึงอุปกรณ์ของฉันได้จากทุกที่ ใช้ชื่อแทนที่จะต้องไล่ IP อย่างต่อเนื่อง

และแน่นอน - เมื่อไซต์เปลี่ยนไปหรือเปลี่ยนแปลงผลลัพธ์คุณจะต้องอัปเดตสิ่งนี้ตามลำดับ :)


วิธีการนี้การทำงานที่ดีสำหรับฉันในหน้าต่าง 10. powershell.exe -noprofile -command ""ผมจำเป็นต้องมีคำสั่งหนึ่งบรรทัดเพื่อให้วิ่งไปข้างต้นในเครื่องหมายคำพูดหลัง แยกการขึ้นบรรทัดใหม่ด้วยเซมิโคลอน ...
Jason

1
หนึ่งในสายการบิน? เพิ่งรัน(Invoke-WebRequest -URI http://myip.dnsomatic.com).Content
merosss

3

ลองสิ่งนี้:
ไม่จำเป็นต้องติดตั้งซอฟต์แวร์ภายนอกใด ๆ

@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));
}

3

หากไม่มีโปรแกรมของบุคคลที่สามจะใช้งาน Windows ได้ยากเนื่องจาก Telnet ไม่ได้ให้บริการตามค่าเริ่มต้น แต่หากมี (XP) หรือเปิดใช้งาน (Windows Vista ขึ้นไป) เพียงพิมพ์:

telnet curlmyip.com 80

หน้าจอจะกะพริบและคุณจะได้รับเคอร์เซอร์ ... ประเภทถัดไป:

GET

ในตัวอักษรพิมพ์ใหญ่ ... จากนั้นคุณจะเห็นส่วนหัวตามด้วย ip ของคุณ (และขอโทษที่ฉันเบลอเพียงแสดงว่ามันจะอยู่ที่ไหน!):

ป้อนคำอธิบายรูปภาพที่นี่

คำตอบอื่น ๆ ที่นี่เห็นได้ชัดว่าทำงานได้ แต่ฉันพยายามเก็บคำถามเกี่ยวกับสิ่งที่สามารถใช้กับหน้าต่างใด ๆ โดยไม่ต้องใช้โปรแกรมของบุคคลที่สาม!

สำหรับ Windows Vista ขึ้นไปคุณสามารถติดตั้ง telnet ได้อย่างง่ายดาย (และปลอดภัย) ผ่านPrograms and featuresหรือใช้คำสั่งต่อไปนี้:

pkgmgr /iu:”TelnetClient”

(และส่วนใหญ่คำตอบ!) จะถือว่าเว็บไซต์ต้นทางเลือกที่อยู่ IP ของคุณอย่างถูกต้อง - ผู้รับมอบฉันทะบางประเภททำสิ่งนี้ผิด ฉันกำลังคัดลอกที่อยู่ IP ของฉันออกจากเราเตอร์สาเหตุนี้ ที่น่าสนใจในกรณีเหล่านี้เว็บไซต์ที่ใช้พอร์ตที่ไม่ได้มาตรฐานอาจทำงานได้ดี
Journeyman Geek

ไม่ได้ทำงานกับแต่ผ่านการทดสอบการทำงานร่วมกับcurlmyip.com checkip.dyndns.org
Sopalajo de Arrierez

2

คุณสามารถใช้ifcfg.me มันรองรับบางคำสั่งภายในที่มาพร้อมกับ windows โดยค่าเริ่มต้น

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

1

ฉันต้องการโซลูชันที่ใช้งานได้กับWindowsโดยไม่ต้องติดตั้งเครื่องมือของบุคคลที่สาม ดังนั้นฉันจึงใช้ตัวเลือกpowershellซึ่งควรเรียกใช้สคริปต์ทุกชั่วโมง

คุณสร้างสคริปต์นี้ด้วย Notepad

$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 หรือใช้ตัววางแผนงานอย่างที่ฉันทำ นี่คือคำสั่งสำหรับการดำเนินการ:

powershell -executionpolicy bypass -File C:\Users\Administrator\Desktop\getIP.ps1

ในตัวกำหนดตารางเวลางานคุณสร้างงานใหม่ ที่ทริกเกอร์ที่คุณใช้การตั้งค่า รายวันสำหรับทุก 1 วันและอยู่ภายใต้ตัวเลือกขั้นสูงที่คุณเลือกทุกชั่วโมงสำหรับระยะเวลาของทันที นอกจากนี้ตรวจสอบงานที่เรียกใช้โดยเร็วที่สุดหลังจากที่มีการเริ่มต้นที่กำหนดจะพลาดในการตั้งค่า ภายใต้การกระทำคุณวางรหัสการกระทำข้างต้น

รหัส powershell สามารถปรับให้เหมาะสมเพราะฉันไม่มีกูรู powerhell (ครั้งแรกของฉันกับมัน) ตอนนี้ฉันกำลังทดสอบว่าสคริปต์ถูกเรียกใช้ทุกชั่วโมงหรือไม่


1

นี่คือสิ่งที่ฉันค้นพบมันเป็นไปได้ที่จะใช้คำสั่งในตัวเพื่อรับที่อยู่ IP สาธารณะ แต่คุณมีการเข้าถึงอินเทอร์เน็ต

telnet icanhazip.com

หรือ

telnet myip.gelma.net

จับดี! แม้ว่าicanhazip.comจะไม่ได้ผลสำหรับฉันและอีกอันหนึ่งทำงานได้ไม่ถูกต้อง :)
Daniel B

0

ipchicken.com จะส่งคืนที่อยู่ IP ของคุณในรูปแบบข้อความหากคุณสามารถแยกวิเคราะห์ HTML ที่ส่งคืนซึ่งคุณแยก IP ภายนอกของเราเตอร์ของคุณ อีกวิธีหนึ่งคุณสามารถติดตั้งหนึ่งในตัวแทน DNS แบบไดนามิกเหล่านั้นที่อัปเดต IP ภายนอกของคุณให้เป็น FQDN จากนั้นเพียงแค่ทำ nslookup บน FQDN ของคุณเพื่อดูหมายเลข IP ปัจจุบันของคุณ เคยมีคนฟรีเช่น DynDNS แต่ตอนนี้ส่วนใหญ่ต้องมีบัญชีสมาชิกแบบชำระเงิน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.