2010-07-21 06:06:13 +0000 2010-07-21 06:06:13 +0000
61
61

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.

Risposte (13)

109
109
109
2014-02-27 14:57:47 +0000

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
33
33
33
2010-07-21 08:24:26 +0000

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)
16
16
16
2010-07-21 06:28:20 +0000

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).

7
7
7
2015-04-23 08:25:29 +0000

Questo funziona bene, lo uso soprattutto con psexec quando ispeziono le connessioni dei computer client.

nslookup myip.opendns.com resolver1.opendns.com
6
6
6
2011-02-12 01:58:08 +0000

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)

5
5
5
2014-02-16 13:34:55 +0000

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. :)

5
5
5
2011-02-12 04:03:59 +0000

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 .

3
3
3
2014-01-15 00:48:54 +0000

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

3
3
3
2013-12-05 15:40:30 +0000

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));
}
2
2
2
2014-11-28 11:40:53 +0000

È possibile utilizzare ifcfg.me . supporta alcuni comandi interni che vengono forniti con windows di default.

curl ifcfg.me
nslookup . ifcfg.me
telnet ifcfg.me
ftp ifcfg.me
finger @ifcfg.me
1
1
1
2015-10-07 22:09:34 +0000

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.
1
1
1
2015-03-22 15:25:28 +0000

Ecco cosa ho capito, è possibile utilizzare il comando incorporato per ottenere l'indirizzo IP pubblico, ma si ha accesso a Internet

telnet icanhazip.com

o

telnet myip.gelma.net
0
0
0
2018-11-08 19:54:03 +0000

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.