Perintah Windows yang mengembalikan IP eksternal


Jawaban:


14

Tidak ada perintah bawaan untuk melakukan ini. Sebagian dari masalahnya adalah ketika Anda terhubung ke internet melalui router, perangkat keras jaringan Anda tidak terhubung langsung ke internet, sehingga sistem Anda tidak secara khusus menetapkan IP. Ada kemungkinan Anda bahkan mungkin memiliki beberapa IP eksternal dalam beberapa kasus jika Anda berada di belakang proxy terbalik, karena banyak jaringan perusahaan disiapkan. Taruhan terbaik Anda mungkin untuk membuat skrip yang menanyakan whatismyip.org , atau mencoba menemukan jika sudah ada.

(Sebagai tip, whatismyip.org lebih disukai daripada kebanyakan solusi lain, karena hanya mengembalikan IP Anda sebagai teks biasa - tidak ada teks berlebihan, tautan, gambar, atau sampah lainnya. Akan lebih mudah digunakan dalam skrip khusus daripada kebanyakan situs deteksi IP lainnya.)


6
Sayangnya, mereka mengubah whatismyip.org; alamat IP sekarang dikembalikan sebagai gambar , sehingga cukup berguna untuk skrip. Situs web "icanhazip.com" yang disebutkan di bawah ini berfungsi.
onnodb

Yandex berfungsi, periksa skrip yang diposting di bawah ini.
Filipe YaBa Polido

Bekerja perintah asli dari bawah superuser.com/a/722397/216374
PsychoData

107

Anda bisa menggunakan permintaan DNS alih-alih permintaan HTTP untuk mengetahui IP publik Anda:

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

Ia menggunakan resolver1.opendns.comserver dns untuk menyelesaikan myip.opendns.com.nama host ajaib ke alamat ip Anda . (Catatan: trailing .pada pencarian mencegah domain pencarian tidak ditambahkan, yang dapat menghasilkan hasil yang salah.)

Versi unix:

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

1
Bekerja seperti pesona.
BK

brilian, bekerja tanpa menginstal apapun juga.
ericosg

Tidak bekerja lagi untuk saya pada November 2017, di Windows 10. Jawaban PowerShell dari Bradley Forney berfungsi.
Jason

Masih bekerja untuk saya (Windows 10, Des 2017). @ Jfs sangat pintar, apakah OpenDNS mendokumentasikan ini di suatu tempat bagaimana Anda menemukannya?
Alex KeySmith

4
Ini harus menjadi jawaban yang diterima, karena itu memberikan perintah yang sebenarnya, dan itu berfungsi. Jawaban yang diterima mengatakan tidak ada perintah (yang terbukti salah), dan menyarankan menggunakan skrip, tanpa benar-benar memberikan arahan lebih lanjut.
CyberClaw

30

ambil salinan Anda sendiri curldari http://curl.haxx.se/download.html lalu adil

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

atau gunakan PowerShell:

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

(disclaimer: http://myexternalip.com dibuat oleh saya)


Itu hanya menyediakan alamat IPv6. Apakah ada cara untuk mendapatkan alamat IPv4?
tim11g

Saya terus membaca dan menemukan contoh IPv4 / IPv6 di bawah ini untuk Powershell. Dimungkinkan untuk mendapatkan IPv4 dengan CURL seperti ini "C:> curl" myip.dnsomatic.com "
tim11g

7

Ini berfungsi dengan baik, saya menggunakannya sebagian besar dengan psexec ketika memeriksa koneksi komputer klien.

nslookup myip.opendns.com resolver1.opendns.com

6

Buat file dengan nama ip.vbsdan salin yang berikut ke dalamnya:

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

Jalankan menggunakan

C:\>cscript ip.vbs

Seperti yang disebutkan nhinkle , yang terbaik adalah memilih situs yang hanya mengembalikan IP dan bukan iklan HTML +, dll. Seperti:

(sumber: sebelumnya http://externip.com/about )


5

Saya membuat skrip batch ini untuk melakukannya beberapa bulan yang lalu:

@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

Ini memberi Anda opsi untuk memasukkan alamat IP di clipboard dan menetapkan variabel lingkungan - %PublicIP%.


METODE SIMPLER:

Sekarang, saya hanya melakukan ini sebagai gantinya:

curl icanhazip.com

atau...

curl icanhazip.com | clip

... untuk memasukkan alamat IP publik saat ini ke clipboard.

Anda membutuhkan CURL .


1
Script dari paradroid berfungsi dengan baik tetapi whatsmyip memindahkan halaman web ke automation.whatismyip.com/n09230945.asp Jika Anda mengubahnya, ini berfungsi dengan sempurna.

5

Dengan Powershell 3.0 (standar Windows 7 adalah 2.0) dapat Anda gunakan Invoke-WebRequest

Untuk IPv4:

$tmp =Invoke-WebRequest -URI http://myip.dnsomatic.com/
$tmp.Content

Untuk IPv6:

$tmp =Invoke-WebRequest -URI http://myexternalip.com/raw
$tmp.Content

Ini akan memberi Anda variabel untuk bekerja jika Anda memiliki sesuatu yang spesifik yang ingin Anda lakukan dengannya. Saya sebenarnya menggunakan ini untuk membuat skrip untuk mengunggah IP dinamis router saya secara berkala, meminta komunikasi pengujian mesin lain secara berkala, dan kemudian memperbarui DNS dengan IP terbaru jika telah berubah sehingga saya dapat mengakses peralatan saya dari mana saja dengan menggunakan nama alih-alih harus terus mengejar IP.

Dan tentu saja - ketika situs berubah atau outputnya berubah, Anda akan ingin memperbarui ini sesuai. :)


Pendekatan ini bekerja sangat baik untuk saya di windows 10. Saya membutuhkan perintah satu baris, jadi jalankan kutipan di atas setelah powershell.exe -noprofile -command "". Pisahkan line-break dengan titik koma ...
Jason

1
Oneliner? Jalankan saja(Invoke-WebRequest -URI http://myip.dnsomatic.com).Content
merosss

3

Coba ini:
Tidak perlu semua jenis perangkat lunak eksternal diinstal.

@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

Tanpa program pihak ketiga sulit di Windows karena Telnet tidak disediakan secara default, tetapi, jika ada (XP) atau dihidupkan (Windows Vista dan yang lebih tinggi), cukup ketik:

telnet curlmyip.com 80

layar akan berkedip, dan Anda hanya akan mendapatkan kursor ... Jenis berikutnya:

GET

Dalam huruf kapital ... Anda kemudian akan melihat header, diikuti oleh ip Anda (dan maaf saya salah, hanya menunjukkan di mana itu akan berada!):

masukkan deskripsi gambar di sini

Jawaban lain di sini jelas berhasil, tetapi, saya mencoba menjawab pertanyaan tentang sesuatu yang dapat digunakan di jendela mana pun, tanpa program pihak ketiga!

Untuk Windows Vista dan di atasnya, Anda dapat menginstal telnet dengan mudah (dan aman) melalui Programs and features, atau menggunakan perintah berikut:

pkgmgr /iu:”TelnetClient”

Itu (dan sebagian besar jawabannya!) Berasumsi bahwa situs web sumber mengambil alamat ip Anda secara akurat - beberapa jenis proxy mengacaukannya. Saya sedang menghapus alamat ip saya dari penyebab router saya ini. Menariknya, dalam kasus ini, situs web yang menggunakan port non-standar dapat berfungsi dengan baik.
Journeyman Geek

Tidak bekerja dengan curlmyip.com, tetapi diuji bekerja dengan checkip.dyndns.org.
Sopalajo de Arrierez

2

Anda dapat menggunakan ifcfg.me . ini mendukung beberapa perintah internal yang datang dengan windows secara default.

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

1

Saya ingin memiliki solusi yang berfungsi untuk Windows tanpa menginstal alat pihak ketiga. Jadi saya mengambil opsi PowerShell , yang harus menjalankan skrip setiap jam.

Anda membuat skrip ini dengan 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"

dan simpan sebagai getIP.ps1suatu tempat. Anda dapat memanggil skrip ini baik secara langsung di PowerShell atau menggunakan task planer seperti yang saya lakukan. Ini adalah perintah untuk mengeksekusi:

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

Di penjadwal tugas, Anda membuat tugas baru. Di Trigger Anda menggunakan pengaturan setiap hari untuk setiap 1 hari dan di bawah opsi lanjutan Anda memilih setiap jam untuk durasi segera . Juga periksa Jalankan tugas sesegera mungkin setelah awal yang dijadwalkan tidak terjawab dalam Pengaturan . Di bawah Aksi, Anda menempelkan kode eksekusi di atas.

Kode PowerShell dapat dioptimalkan, karena saya bukan PowerShell Guru (pertama kali dengan itu). Sekarang saya sedang menguji apakah skrip dipanggil setiap jam.


1

Inilah yang saya tahu, mungkin untuk menggunakan perintah built-in untuk mendapatkan alamat IP publik tetapi Anda memiliki akses ke internet

telnet icanhazip.com

atau

telnet myip.gelma.net

Tangkapan yang bagus! Meskipun icanhazip.comtidak akan bekerja untuk saya dan yang lainnya tidak melakukan IPv6 dengan benar. :)
Daniel B

0

ipchicken.com akan mengembalikan alamat IP Anda yang jelas dalam format teks jika Anda dapat menguraikan HTML yang kembali Anda mengekstrak IP eksternal router Anda. Bergantian Anda dapat menginstal salah satu agen DNS dinamis yang memperbarui IP eksternal Anda yang jelas ke FQDN dan kemudian hanya melakukan nslookup pada FQDN Anda untuk melihat nomor IP Anda saat ini. Dulu ada yang gratis seperti DynDNS tetapi kebanyakan dari mereka sekarang memerlukan akun berlangganan berbayar.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.