Comando di Windows che restituisce IP esterno
C'è un comando con il quale posso trovare il mio IP esterno del mio router o del mio Router NAT\DSL, ecc, eliminando la necessità di visitare whatsmyip.net o simili.
C'è un comando con il quale posso trovare il mio IP esterno del mio router o del mio Router NAT\DSL, ecc, eliminando la necessità di visitare whatsmyip.net o simili.
Potreste usare una richiesta DNS invece di una richiesta HTTP per trovare il vostro IP pubblico:
C:\> nslookup myip.opendns.com. resolver1.opendns.com
Utilizza il server dns resolver1.opendns.com
per risolvere il magico myip.opendns.com.
hostname a il vostro indirizzo ip. (Nota: il trailing .
sul lookup impedisce l'aggiunta di domini di ricerca, che può dare risultati non corretti)
versione Unix:
$ dig +short myip.opendns.com @resolver1.opendns.com
prendete la vostra copia di curl
da http://curl.haxx.se/download.html e poi solo
curl "http://myexternalip.com/raw"
o usate powerhell:
$wc = new-object System.Net.WebClient
$wc.DownloadString("http://myexternalip.com/raw")
``` &001
(disclaimer: [ http://myexternalip.com ](http://myexternalip.com) è stato creato da me)
Non c'è un comando incorporato per fare questo. Parte del problema è che quando si è connessi a Internet attraverso un router, l'hardware di rete non è direttamente connesso a Internet, quindi al sistema non viene assegnato un IP specifico. E’ possibile che in alcuni casi si possano avere più IP esterni se si è dietro un reverse proxy, dato che molte reti aziendali sono impostate. La soluzione migliore potrebbe essere quella di creare uno script che interroghi whatismyip.org , o di cercare di scoprire se ne esiste già uno.
(Come suggerimento, whatismyip.org è preferibile alla maggior parte delle altre soluzioni, dal momento che restituisce il vostro IP come testo semplice - nessun testo superfluo, link, immagini o altra spazzatura. Sarebbe molto più facile da usare in uno script personalizzato rispetto alla maggior parte degli altri siti di rilevamento IP).
Questo funziona bene, lo uso soprattutto con psexec quando ispeziono le connessioni dei computer client.
nslookup myip.opendns.com resolver1.opendns.com
Creare un file di nome ip.vbs
e copiarvi quanto segue:
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
``` ```
C:\>cscript ip.vbs
Eseguire utilizzando
&001
Come nhinkle nota , è meglio scegliere un sito che restituisca solo l'IP e non HTML + annunci, ecc. come:
(fonte: precedentemente [ http://externip.com/about ]&003)
Con Powershell 3.0 (il default di Windows 7 è 2.0) si può usare Invoke-WebRequest
** Per IPv4:**
$tmp =Invoke-WebRequest -URI http://myip.dnsomatic.com/
$tmp.Content
** Per IPv6:**
$tmp =Invoke-WebRequest -URI http://myexternalip.com/raw
$tmp.Content
Questo vi darà una variabile con cui lavorare se avete qualcosa di specifico che volete fare con esso. In realtà sto usando questo per costruire uno script per caricare periodicamente l'IP dinamico del mio router, avere un'altra comunicazione di test della macchina ad intervalli regolari, e poi aggiornare il DNS con l'ultimo IP se è cambiato, in modo da poter accedere alla mia attrezzatura da qualsiasi luogo utilizzando un nome, invece di dover inseguire costantemente l'IP.
E naturalmente - man mano che i siti cambiano o le loro uscite cambiano, vorrai aggiornare questo di conseguenza. :)
Ho realizzato questo script batch per fare questo alcuni mesi fa:
@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
Ti dà la possibilità di inserire l'indirizzo IP negli appunti e imposta una variabile ambientale - %PublicIP%
.
** METODO DI SEMPLIFICATORE:**
Ora, faccio solo questo invece:
curl icanhazip.com
``` ```
curl icanhazip.com | clip
o…
&001
…per inserire l'indirizzo IP pubblico attuale negli appunti.
È necessario cURL .
Senza programmi di terze parti è difficile su Windows in quanto Telnet non viene fornito di default, ma, se è presente (XP) o acceso (Windows Vista e superiori), basta digitare:
telnet curlmyip.com 80
lo schermo lampeggerà, e si otterrà solo un cursore… Prossimo tipo:
GET
``` ```
pkgmgr /iu:”TelnetClient”
In lettere maiuscole… vedrete poi le intestazioni, seguite dal vostro ip (e scusate se l'ho offuscata, mostrando solo dove si troverebbe! ):
Altre risposte qui ovviamente funzionano, ma, sto cercando di attenermi alla domanda su qualcosa che può essere usato su qualsiasi finestra, senza programmi di terze parti!
Per Windows Vista e superiori, potete installare telnet facilmente (e in modo sicuro) attraverso Programs and features
, o usare il seguente comando:
&001
Prova questo: Non ha bisogno di nessun tipo di software esterno installato.
@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));
}
Volevo avere una soluzione che funzionasse per Windows senza installare strumenti di terze parti. Così ho preso l'opzione powershell, che dovrebbe eseguire uno script ogni ora.
Si crea questo script con 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"
e lo si salva come getIP.ps1
da qualche parte. Potete chiamare questo script direttamente in powershell o usare il task planer come ho fatto io. Questo è il comando per l'esecuzione:
powershell -executionpolicy bypass -File C:\Users\Administrator\Desktop\getIP.ps1
``` &001
Nel task scheduler si crea un nuovo task. A **Trigger** si usa l'impostazione _giornalmente per ogni 1 giorno_ e sotto l'opzione avanzata si sceglie _ogni ora per la durata di immediatamente_. Selezionate anche _Eseguire l'attività il più presto possibile dopo che un inizio pianificato è saltato_ nelle **Impostazioni**. Sotto **Azione** si incolla il codice di esecuzione di cui sopra.
Il codice powershell può essere ottimizzato, perché non sono un guru powershell (è la prima volta che lo uso). Ora sto testando se lo script viene chiamato ogni ora.
ipchicken.com restituirà il vostro indirizzo IP apparente in formato testo se potete analizzare l'HTML di ritorno estraete l'IP esterno del vostro router. In alternativa potete installare uno di quegli agenti DNS dinamici che aggiornano il vostro IP esterno apparente ad un FQDN e poi basta fare nslookup sul vostro FQDN per vedere il vostro numero IP corrente. Un tempo ce n'erano di gratuiti come DynDNS, ma la maggior parte di essi ora richiede un account di abbonamento a pagamento.