Dış IP döndüren Windows komutu


Yanıtlar:


14

Bunu yapmak için yerleşik bir komut yok. Sorunun bir kısmı, internete bir yönlendirici aracılığıyla bağlandığınızda, ağ donanımınızın doğrudan Internet'e bağlı olmamasıdır, bu nedenle sisteminize özel bir IP atanmamış. Pek çok şirket ağı kurulduğundan, bir ters proxy'nin arkasındaysanız, bazı durumlarda birden fazla harici IP'niz bile olabilir. En iyisi , whatismyip.org'u sorgulayan bir komut dosyası oluşturmak veya zaten var olup olmadığını bulmaya çalışmak olabilir.

(Bir ipucu olarak, whatismyip.org diğer pek çok çözüm için tercih edilir, çünkü IP'nizi sadece düz metin olarak döndürür - gereksiz metinler, bağlantılar, görüntüler veya diğer çöpler yoktur. diğer IP algılama siteleri.)


6
Ne yazık ki whatismyip.org adresini değiştirdiler; IP adresi şimdi bir resim olarak döndürülür , bu da komut dosyası için oldukça yararsız hale gelir. Aşağıda belirtilen web sitesi "icanhazip.com" does işi.
onnodb

Yandex çalışıyor, aşağıda yayınlanan betiği kontrol edin.
Filipe YaBa Polido

Aşağıdaki yerel kullanıcı
PsychoData

107

Genel IP’nizi bulmak için HTTP isteği yerine bir DNS isteği kullanabilirsiniz:

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

Bu kullanır resolver1.opendns.combüyülü çözmek için dns sunucusunu myip.opendns.com.için hostname sizin ip adresi. (Not: Aramadaki izlem ., arama etki alanlarının eklenmesini önler, bu da yanlış sonuçlara neden olabilir.)

Unix sürümü:

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

1
Bir cazibe gibi çalıştı.
BK,

parlak, hiçbir şey yüklemeden çalışır.
ericosg

Artık benim için işe yaramadı, Kasım 2017'de, Windows 10'da. Bradley Forney'in PowerShell cevabı çalışıyor.
Jason

Hala benim için çalıştı (Windows 10, Dec 2017). Çok zekice jfs, OpenDNS bunu bir yerde belgelemiş mi, nasıl keşfettiniz?
Alex KeySmith

4
Bu, gerçek bir komut sağladığı için kabul edilen cevap olmalıdır ve çalışır. Kabul edilen cevap, komutun (yanlış olduğu ispatlanmış) olmadığını söyler ve daha fazla yön vermeden bir komut dosyası kullanmayı önerir.
CyberClaw

30

http://curl.haxx.se/download.html adresinden kendi kopyanızı curlalın ve sonra

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

veya powershell kullanın:

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

(feragatname: http://myexternalip.com benim tarafımdan oluşturuldu)


Bu sadece bir IPv6 adresi sağlar. IPv4 adresini almanın bir yolu var mı?
tim11g

Powershell için IPv4 / IPv6 örneklerini okumaya devam ettim. IPv4'ü CURL ile bu şekilde "C:> curl" myip.dnsomatic.com " gibi elde etmek mümkündür
tim11g 19

7

Bu iyi çalışıyor, istemci bilgisayar bağlantılarını incelerken çoğunlukla psexec ile kullanıyorum.

nslookup myip.opendns.com resolver1.opendns.com

6

Adında bir dosya oluşturun ip.vbsve aşağıdakini kopyalayın:

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

Kullanarak yürütmek

C:\>cscript ip.vbs

Nhinkle’in belirttiği gibi , en iyi şekilde IP’yi döndüren, HTML + reklamları vb. Gibi bir site seçmek en iyisidir:

(kaynak: önceden http://externip.com/about )


5

Bu toplu komut dosyasını birkaç ay önce yapmak için yaptım:

@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 adresini panoya koyma seçeneği sunar ve çevre değişkenini ayarlar - %PublicIP%.


SIMPLER YÖNTEM:

Şimdi, bunun yerine sadece yapıyorum:

curl icanhazip.com

veya...

curl icanhazip.com | clip

... geçerli halka açık IP adresini panoya almak için.

CURL'ye ihtiyacınız var .


1
Paradroid betiği iyi çalıştı ama whatsmyip web sayfasını automation.whatismyip.com/n09230945.as adresine kaydırdı. Buna değiştirirseniz, mükemmel çalışıyor.

5

Powershell 3.0 ile (Windows 7 varsayılan 2.0'dır) Invoke-WebRequest

IPv4 için:

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

IPv6 için:

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

Bununla çalışmak istediğiniz belirli bir şey varsa, bu size çalışmak için bir değişken verecektir. Aslında bunu yönlendiricimin dinamik IP'sini düzenli aralıklarla yüklemek için bir komut dosyası oluşturmak, düzenli aralıklarla başka bir makine testi iletişimi sağlamak ve daha sonra değiştirilmiş olması durumunda DNS'yi en yeni IP ile güncellemek ve böylece donanıma istediğim yerden erişebilmek için kullanıyorum. IP'yi sürekli takip etmek yerine bir isim kullanmak.

Ve elbette - siteler değiştikçe veya çıktıları değiştikçe, buna göre güncellemek isteyeceksiniz. :)


Bu yaklaşım benim için Windows 10'da harika çalıştı. Tek satırlık bir komuta ihtiyacım vardı, bu yüzden yukarıdakileri tırnak içinde koştum powershell.exe -noprofile -command "". Satır sonunu noktalı virgülle ayırın ...
Jason

1
Oneliner? Sadece koş(Invoke-WebRequest -URI http://myip.dnsomatic.com).Content
18'de

3

Bunu deneyin:
Yüklü herhangi bir harici yazılıma ihtiyaç duymaz.

@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

Üçüncü parti programlar olmadan Telnet varsayılan olarak temin edilmediğinden Windows'ta zordur, ancak açıksa (XP) veya açıksa (Windows Vista ve üzeri), sadece şunu yazın:

telnet curlmyip.com 80

Ekran yanıp sönecek ve bir imleç alacaksınız ... Sonraki tip:

GET

Büyük harflerle ... sonra başlıkları göreceksiniz, ardından ip'inizi izleyin (ve üzgünüm bulanıklaştırdım, sadece nerede olacağını gösterdim!):

görüntü tanımını buraya girin

Buradaki diğer cevaplar açık bir şekilde işe yarıyor, ancak üçüncü taraf programları olmadan herhangi bir pencerede kullanılabilecek bir şey hakkında soruya devam etmeye çalışıyorum!

Windows Vista ve üzeri işletim sistemlerinde telnet'i kolayca (ve güvenle) yükleyebilir Programs and featuresveya aşağıdaki komutu kullanabilirsiniz:

pkgmgr /iu:”TelnetClient”

Bu (ve çoğu sorunun cevabı!) Kaynak web sitesinin ip adresinizi doğru bir şekilde aldığını varsayar - bazı proxy türleri bunu karıştırır. Bu yüzden ip adresimi yönlendiricimden kazıyorum. İlginç bir şekilde, bu durumlarda, standart olmayan bir bağlantı noktası kullanan bir web sitesi iyi sonuç verebilir.
Journeyman Geek

Çalışmıyor curlmyip.com, çalışılıyor ancak çalışılıyor checkip.dyndns.org.
Sopalajo de Arrierez

2

İfcfg.me'yi kullanabilirsiniz . varsayılan olarak pencerelerle birlikte gelen bazı iç komutları destekler.

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

1

Üçüncü taraf araçlarını yüklemeden Windows için çalışan bir çözüm bulmak istedim . Bu yüzden her saat bir script çalıştırması gereken powershell seçeneğini kullandım.

Bu betiği Not Defteri ile oluştur

$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"

ve bir yer olarak kaydedin getIP.ps1. Bu betiği doğrudan powershell'de çağırabilir veya görev planlamacısını benim yaptığım gibi kullanabilirsiniz. Bu çalıştırma komutudır:

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

Görev zamanlayıcısında yeni bir görev oluşturursunuz. At Tetikleyici ayarı kullanmak her 1 gün için günlük ve gelişmiş seçeneği altında seçtiğiniz hemen süresince her saat . Ayrıca kontrol en kısa sürede planlanmış bir başlangıç cevapsız sonra Çalıştır görevi de Ayarlar . Eylem altında yukarıdaki yürütme kodunu yapıştırın.

Powershell kodu optimize edilebilir, çünkü ben powershell gurusu değilim (onunla ilk kez). Şimdi senaryoyu her saat ararsa test ediyorum.


1

İşte anladığım kadarıyla, genel IP adresini almak için yerleşik komut kullanmak mümkündür, ancak internete erişiminiz vardır.

telnet icanhazip.com

veya

telnet myip.gelma.net

İyi yakalama! Yine icanhazip.comde benim için çalışmayacak ve diğeri IPv6'yı düzgün yapmıyor. :)
Daniel B

0

ipchicken.com, yönlendiricinizin harici IP'sini çıkardığınız geri dönen HTML'yi ayrıştırırsanız, görünen IP adresinizi metin biçiminde döndürecektir. Alternatif olarak, görünen harici IP’nizi bir FQDN’ye güncelleyen dinamik DNS ajanlarından birini yükleyebilir ve ardından geçerli IP numaranızı görmek için FQDN’nize bakabilirsiniz. Eskiden DynDNS gibi ücretsiz olanlar vardı ama çoğu şimdi ücretli bir abonelik hesabı gerektiriyor.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.