Yönelticimin harici IP'sini veya NAT \ DSL Router'ı vb. Bulabileceğim bir komut var mı, whatsmyip.net adresini ziyaret etmem gerekmiyor.
Yönelticimin harici IP'sini veya NAT \ DSL Router'ı vb. Bulabileceğim bir komut var mı, whatsmyip.net adresini ziyaret etmem gerekmiyor.
Yanıtlar:
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.)
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.com
bü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
http://curl.haxx.se/download.html adresinden kendi kopyanızı curl
alı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 iyi çalışıyor, istemci bilgisayar bağlantılarını incelerken çoğunlukla psexec ile kullanıyorum.
nslookup myip.opendns.com resolver1.opendns.com
Adında bir dosya oluşturun ip.vbs
ve 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 )
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 .
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. :)
powershell.exe -noprofile -command ""
. Satır sonunu noktalı virgülle ayırın ...
(Invoke-WebRequest -URI http://myip.dnsomatic.com).Content
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));
}
Üçü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!):
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 features
veya aşağıdaki komutu kullanabilirsiniz:
pkgmgr /iu:”TelnetClient”
curlmyip.com
, çalışılıyor ancak çalışılıyor checkip.dyndns.org
.
İ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
Üçü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.
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.