C'è un modo per esaminare lo stato di una porta specifica dalla riga di comando di Windows? So che posso usare netstat per esaminare tutte le porte, ma netstat è lento e probabilmente non lo è guardare una porta specifica.
C'è un modo per esaminare lo stato di una porta specifica dalla riga di comando di Windows? So che posso usare netstat per esaminare tutte le porte, ma netstat è lento e probabilmente non lo è guardare una porta specifica.
Risposte:
Ecco la semplice soluzione di ricerca delle porte ...
In cmd:
netstat -na | find "8080"
In bash:
netstat -na | grep "8080"
In PowerShell:
netstat -na | Select-String "8080"
-o
bandiera (cioè -nao
qui) per includere il PID del processo che utilizza la porta.
È possibile utilizzare il netstat
combinato con le -np
bandiere e una pipe per i comandi find
o findstr
.
L'utilizzo di base è come tale:
netstat -np <protocol> | find "port #"
Quindi, ad esempio, per controllare la porta 80 su TCP, puoi farlo: Il netstat -np TCP | find "80"
che finisce per fornire il seguente tipo di output:
TCP 192.168.0.105:50466 64.34.119.101:80 ESTABLISHED
TCP 192.168.0.105:50496 64.34.119.101:80 ESTABLISHED
Come puoi vedere, questo mostra solo le connessioni sulla porta 80 per il protocollo TCP.
Io uso:
netstat –aon | find "<port number>"
qui o rappresenta l'ID del processo. ora puoi fare qualunque cosa con l'ID processo. Per terminare il processo, ad esempio, utilizzare:
taskkill /F /pid <process ID>
quando ho problemi con WAMP apache, uso questo codice per trovare quale programma sta usando la porta 80.
netstat -o -n -a | findstr 0.0:80
3068
è PID, quindi posso trovarlo dal task manager e interrompere quel processo.
Come notato altrove: utilizzare netstat, con gli switch appropriati, quindi filtrare i risultati con find [str]
Più semplice:
netstat -an | find ":N"
o
netstat -a -n | find ":N"
Per trovare un porto straniero puoi usare:
netstat -an | findstr ":N[^:]*$"
Per trovare una porta locale è possibile utilizzare:
netstat -an | findstr ":N.*:[^:]*$"
Dove N è il numero di porta che ti interessa.
-n
assicura che tutte le porte siano numeriche, cioè non restituite come tradotte in nomi di servizi.
-a
ti assicurerà di cercare tutte le connessioni (TCP, UDP, ascolto ...)
Nella find
stringa è necessario includere i due punti, come qualificatore di porta, altrimenti il numero potrebbe corrispondere a indirizzi locali o esteri.
Puoi restringere ulteriormente la ricerca usando altri switch netstat se necessario ...
Ulteriori letture (^ 0 ^)
netstat /?
find /?
findstr /?
netstat -a -n | find /c "10.240.199.9:8080"
ti darà il numero di socket attivi su un IP e una porta specifici (numero di porta del server)
FIND: Parameter format not correct
Per utente di Windows 8: Apri il prompt dei comandi, digitare netstat -an | trova "il tuo numero di porta" , inserisci.
Se la risposta arriva come ASCOLTO, la porta è in uso, altrimenti è libera.
Per migliorare la risposta di @ EndUzr :
Per trovare una porta esterna (IPv4 o IPv6) è possibile utilizzare:
netstat -an | findstr /r /c:":N [^:]*$"
Per trovare una porta locale (IPv4 o IPv6) è possibile utilizzare:
netstat -an | findstr /r /c:":N *[^ ]*:[^ ]* "
Dove N è il numero di porta che ti interessa. L'opzione "/ r" gli dice di elaborarlo come regexp. L'opzione "/ c" consente a findstr di includere spazi nelle stringhe di ricerca invece di considerare uno spazio come delimitatore di stringhe di ricerca. Questo spazio aggiunto evita che le porte più lunghe vengano maltrattate, ad esempio ": 80" vs ": 8080" e altri problemi di mungitura delle porte.
Per elencare le connessioni remote al server RDP locale, ad esempio:
netstat -an | findstr /r /c:":3389 *[^ ]*:[^ ]*"
O per vedere chi sta toccando il tuo DNS:
netstat -an | findstr /r /c:":53 *[^ ]*:[^ ]*"
Se si desidera escludere porte solo locali, è possibile utilizzare una serie di eccezioni con "/ v" e fuggire i caratteri con una barra rovesciata:
netstat -an | findstr /v "0.0.0.0 127.0.0.1 \[::\] \[::1\] \*\:\*" | findstr /r /c:":80 *[^ ]*:[^ ]*"
Per la porta 80, il comando sarebbe: netstat -an | trova "80" Per la porta n, il comando sarebbe: netstat -an | trova "n"
Qui, netstat è l'istruzione per la tua macchina
-a: visualizza tutte le connessioni e le porte di ascolto -n: visualizza tutti gli indirizzi e le istruzioni in formato numerico (è necessario perché l'output di -a può contenere nomi di macchine)
Quindi, un comando find per "Pattern Match" l'output del comando precedente.
In RHEL 7, utilizzo questo comando per filtrare diverse porte nello stato LISTEN:
sudo netstat -tulpn | grep LISTEN | egrep '(8080 |8082 |8083 | etc )'
Questo comando mostrerà tutte le porte e il loro indirizzo di destinazione:
netstat -f
Usa il comando lsof "lsof -i tcp: port #", ecco un esempio.
$ lsof -i tcp:1555
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
java 27330 john 121u IPv4 36028819 0t0 TCP 10.10.10.1:58615->10.10.10.10:livelan (ESTABLISHED)
java 27330 john 201u IPv4 36018833 0t0 TCP 10.10.10.1:58586->10.10.10.10:livelan (ESTABLISHED)
java 27330 john 264u IPv4 36020018 0t0 TCP 10.10.10.1:58598->10.10.10.10:livelan (ESTABLISHED)
java 27330 john 312u IPv4 36058194 0t0 TCP 10.10.10.1:58826->10.10.10.10:livelan (ESTABLISHED)
netstat
è lento solo se non si utilizza lo-n
switch, il che significa che deve eseguire molte ricerche DNS.