Apakah ada perintah dimana saya dapat menemukan IP eksternal router saya atau NAT \ DSL Router saya, dll., Menghilangkan kebutuhan untuk mengunjungi whatsmyip.net atau yang serupa.
Apakah ada perintah dimana saya dapat menemukan IP eksternal router saya atau NAT \ DSL Router saya, dll., Menghilangkan kebutuhan untuk mengunjungi whatsmyip.net atau yang serupa.
Jawaban:
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.)
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.com
server 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
ambil salinan Anda sendiri curl
dari 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)
Ini berfungsi dengan baik, saya menggunakannya sebagian besar dengan psexec ketika memeriksa koneksi komputer klien.
nslookup myip.opendns.com resolver1.opendns.com
Buat file dengan nama ip.vbs
dan 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 )
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 .
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. :)
powershell.exe -noprofile -command ""
. Pisahkan line-break dengan titik koma ...
(Invoke-WebRequest -URI http://myip.dnsomatic.com).Content
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));
}
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!):
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”
curlmyip.com
, tetapi diuji bekerja dengan checkip.dyndns.org
.
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.ps1
suatu 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.
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
icanhazip.com
tidak akan bekerja untuk saya dan yang lainnya tidak melakukan IPv6 dengan benar. :)
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.