Bagaimana cara mendapatkan alamat IP eksternal saya (lebih dari NAT) dari baris perintah Windows? [duplikat]

13

Perintah "ipconfig" Windows hanya dapat menunjukkan kepada saya parameter dari antarmuka Ethernet dari mesin saya (bahkan dengan ipconfig /allargumen). Ini dapat menampilkan informasi terperinci tentang antarmuka, tetapi tidak akan pernah menunjukkan alamat IP eksternal saya melalui jaringan NAT .

ipconfig / all - tangkapan layar Windows

Namun, ada beberapa situs web, seperti "Apa alamat IP saya" yang bisa mendapatkan dan menunjukkan alamat IP eksternal saya. Jadi saya bertanya-tanya, apakah mungkin untuk mendapatkan nilai ini secara eksternal? Haruskah saya berharap bahwa ada beberapa cara untuk mendapatkan informasi ini dari baris perintah di mesin lokal saya ...

Saya perlu mendapatkan nilai ini untuk masuk ke aplikasi yang saya lakukan dengan VBScript . Apakah ada cara untuk melakukan ini, dari cmdpada Windows?

Diogo
sumber
Perhatikan bahwa layanan apa-is-my-IP berbasis HTTP dapat memberi Anda IP dari server proxy. (Dan sebelum ada yang menunjukkan bahwa proksi HTTPS ada, Anda tidak dapat secara transparan mem-proksi HTTPS. Jika Anda memilikinya, Anda akan mengetahuinya.)
billpg

Jawaban:

11

Sekarang, menggunakan situs yang disediakan Oliver, ini bisa dilakukan dalam VBScript.

Dim o
Set o = CreateObject("MSXML2.XMLHTTP")
o.open "GET", "http://ifconfig.me/ip", False
o.send
WScript.StdOut.Write o.responseText

Ada metode serupa untuk PowerShell.

Bob
sumber
Bagus, itu berhasil. Saya akan memasukkannya di program saya. Ini solusi yang bagus untuk masalah saya. Terima kasih.
Diogo
Hmm, itu mengembalikan "Acess ditolak" pada baris 4, karakter 1 untuk skrip ini. Bahkan menjalankannya dari baris perintah hak administrator ... Apakah Anda tahu mengapa?
Diogo
@DiogoRocha Saya tidak tahu mengapa. Fiasco mungkin lebih dapat diandalkan. Mungkin juga Anda memiliki firewall atau sesuatu yang memblokir akses internet ke wscript/ cscript.
Bob
10

Masalahnya adalah, itu bukan alamat IP Anda. Ini adalah alamat IP router Anda.

Jadi Anda tidak akan pernah bisa mengambilnya tanpa melalui router Anda. Dan cara termudah adalah dengan membuat router mengambil situs web untuk Anda (seperti yang sudah Anda perhatikan). Karena router akan menggunakan alamat IP-nya untuk mengambil situs itu.

Yang sedang berkata, Anda dapat membuatnya mudah pada diri sendiri dengan menggunakan ifconfig.me/ip . Sekarang, jika sudah curl, Anda sudah selesai, jika tidak: Wget / cURL alternatif asli untuk Windows?

Der Hochstapler
sumber
1
ifconfig.me/ip butuh waktu lama untuk memuat. whatismyip.org memberi Anda IP teks biasa yang identik dan jauh lebih cepat.
nhinkle
1
@nhinkle Itu mungkin tergantung pada lokasi Anda. Mereka berdua tampaknya memiliki waktu buka yang sama untuk saya, tetapi waktu respons ping dari ifconfig.me adalah setengah (139ms vs 250ms). Yang mungkin lebih penting adalah bahwa layanan tetap untuk selama mungkin, tetapi kami benar-benar tidak tahu.
Bob
Tidak ada yang salah dengan alamat IP eksternal router saya mempertimbangkan aturan port forwarding dan IPv4.
mbx
5

Buat skrip VB untuk dijalankan di waktu luang Anda.

Ketikkan ini ke file txt:

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

Tutup file txt dan ganti namanya menjadi ip.vbs (simpan ke C: untuk contoh ini)

Di jendela, buka jendela dos (jalankan cmd) ( ha! Saya baru sadar jika Anda menukarnya menjadi dmc !! )

Pastikan Anda berada di c: / (jika tidak, ketik c: & tekan enter, lalu cd .. & masukkan beberapa kali hingga Anda melihat C:>)

Pada tipe dos prompt:

cscript ip.vbs

dan Anda akan langsung melihat IP eksternal Anda.

Jika Anda meletakkan file vbs ke kunci usb atau sesuatu (dan ingat untuk menjalankan cscript ip.vbs di dos prompt - tetapi pastikan Anda berada di direktori yang sama dengan file ip.vbs), Anda dapat membawanya ke mana pun Anda pergi dan jalankan file .vbs di komputer mana pun untuk melihat IP eksternal mereka.

Satu catatan lain, baris yang memiliki alamat untuk icanhazip.com dapat diubah menjadi salah satu dari yang berikut:

http://myip.dnsomatic.com
http://whatismyip.org
http://icanhazip.com
http://www.whatismyip.com/automation/n09230945.asp
http://externip.com

Edit, Anda juga dapat menjalankan file ip.vbs di windows tanpa membuka jendela dos dan itu hanya akan muncul di jendela pop up kecil.

Juara
sumber
icanhazip.com memiliki waktu respons sangat singkat yang lebih baik daripada ipconfig.me/ip di sini di pusat Eropa.
Martin Braun
3

Untuk mendapatkan alamat IP eksternal, Anda perlu menanyakan sesuatu di luar jaringan dan melaporkannya kembali seperti apa alamat IP Anda "nampak". Ini dapat dilakukan melalui scripting dengan meminta halaman yang mudah untuk menguraikan hasil dari dan mendapatkan alamat IP dari itu, tetapi tidak ada alat yang dibangun ke dalam Windows yang Anda hanya bisa memberi tahu Anda apa alamat IP eksternal Anda. Anda harus menulis sendiri atau menemukannya dan mengunduhnya.

Scott Chamberlain
sumber
2

Menggunakan sesuatu seperti DynDNS untuk menetapkan alamat IP DHCP Anda nama domain, Anda kemudian bisa melakukan nslookup, atau ping (jika router Anda dikonfigurasi untuk merespons), nama domain Anda dan ekstrak alamat IP dari itu.

Satu-satunya utilitas Windows lainnya adalah traceroute, tetapi hanya akan menunjukkan gateway keluar yang Anda sambungkan, bukan alamat IP router Anda yang terhubung ke gateway itu.

Sunting: Karena diperlukan sedikit penguraian di atas untuk mengekstrak string alamat IP dan ifconfig.mememiliki respons jarang yang bagus, inilah sedikit varian pada skrip Bob, fungsinya dapat menguji tanpa respons dan mengembalikan IP bersih yang bagus alamat untuk digunakan dalam skrip jika server aktif.

wscript.echo WAN_IP()

function WAN_IP()
    set obj = createobject("Microsoft.XMLHTTP")
    call obj.open("get", "http://ifconfig.me/ip", false)
    obj.send()

    strresponse = obj.responsetext
    set obj = nothing

    if strresponse <> "" then
        strIP = strresponse
    else
        strIP = "Unavailable"
    end if

    WAN_IP = trim(strIP)

end function
Laboratorium Fiasco
sumber
1

Jika router Anda mendukung Universal plug & Play (UPnP), Anda dapat menanyakan alamat IP-nya.

Pada Windows Anda dapat menanyakan informasi tersebut menggunakan WMI dan dari baris perintah menggunakan alat WMIC.

Robert
sumber
2
Bisakah Anda memberikan contoh? Saya akan sangat tertarik dengan ini.
Der Hochstapler
1

Seperti yang sudah dikatakan orang lain, Anda harus mengandalkan layanan eksternal. Saya akan merekomendasikan http://www.externalip.net

Anda dapat menggunakan http://api.externalip.net/ip untuk mendapatkan ip dalam format teks biasa. Ini telah terbukti cepat dan andal, ditambah lagi penggunaannya tidak terbatas.


sumber