¿Hay alguna manera de examinar el estado de un puerto específico desde la línea de comandos de Windows? Sé que puedo usar netstat para examinar todos los puertos, pero netstat es lento y probablemente no lo sea mirar un puerto específico.
¿Hay alguna manera de examinar el estado de un puerto específico desde la línea de comandos de Windows? Sé que puedo usar netstat para examinar todos los puertos, pero netstat es lento y probablemente no lo sea mirar un puerto específico.
Respuestas:
Aquí está la solución fácil de encontrar puertos ...
En cmd:
netstat -na | find "8080"
En bash:
netstat -na | grep "8080"
En PowerShell:
netstat -na | Select-String "8080"
-o
bandera (es decir, -nao
aquí) para incluir el PID del proceso utilizando el puerto.
Puede usar el netstat
combinado con las -np
banderas y una tubería a los comandos find
o findstr
.
El uso básico es como tal:
netstat -np <protocol> | find "port #"
Entonces, por ejemplo, para verificar el puerto 80 en TCP, puede hacer esto: lo netstat -np TCP | find "80"
que termina dando el siguiente tipo de salida:
TCP 192.168.0.105:50466 64.34.119.101:80 ESTABLISHED
TCP 192.168.0.105:50496 64.34.119.101:80 ESTABLISHED
Como puede ver, esto solo muestra las conexiones en el puerto 80 para el protocolo TCP.
Yo suelo:
netstat –aon | find "<port number>"
aquí o representa la identificación del proceso. ahora puede hacer lo que sea con la ID del proceso. Para finalizar el proceso, por ejemplo, use:
taskkill /F /pid <process ID>
cuando tengo un problema con WAMP apache, uso este código para encontrar qué programa está usando el puerto 80.
netstat -o -n -a | findstr 0.0:80
3068
es PID, por lo que puedo encontrarlo en el administrador de tareas y detener ese proceso.
Como se señaló en otra parte: use netstat, con los interruptores apropiados, y luego filtre los resultados con find [str]
Lo más básico:
netstat -an | find ":N"
o
netstat -a -n | find ":N"
Para encontrar un puerto extranjero puede usar:
netstat -an | findstr ":N[^:]*$"
Para encontrar un puerto local, puede usar:
netstat -an | findstr ":N.*:[^:]*$"
Donde N es el número de puerto que le interesa.
-n
garantiza que todos los puertos serán numéricos, es decir, no se devolverán como traducidos a los nombres de servicio.
-a
asegurará que busque todas las conexiones (TCP, UDP, escucha ...)
En la find
cadena debe incluir los dos puntos, como el calificador de puerto, de lo contrario, el número puede coincidir con direcciones locales o extranjeras.
Puede limitar aún más la búsqueda utilizando otros conmutadores netstat según sea necesario ...
Lectura adicional (^ 0 ^)
netstat /?
find /?
findstr /?
netstat -a -n | find /c "10.240.199.9:8080"
le dará un número de sockets activos en una IP y puerto específicos (número de puerto del servidor)
FIND: Parameter format not correct
Para usuarios de Windows 8: Abra el símbolo del sistema, escriba netstat -an | encuentra "tu número de puerto" , ingrese.
Si la respuesta llega como ESCUCHANDO, entonces el puerto está en uso, de lo contrario, es gratis.
Para mejorar la respuesta de @ EndUzr :
Para encontrar un puerto extranjero (IPv4 o IPv6) puede usar:
netstat -an | findstr /r /c:":N [^:]*$"
Para encontrar un puerto local (IPv4 o IPv6) puede usar:
netstat -an | findstr /r /c:":N *[^ ]*:[^ ]* "
Donde N es el número de puerto que le interesa. El modificador "/ r" le dice que lo procese como regexp. El modificador "/ c" permite a findtr incluir espacios dentro de las cadenas de búsqueda en lugar de tratar un espacio como un delimitador de cadena de búsqueda. Este espacio adicional evita que los puertos más largos sean maltratados, por ejemplo, ": 80" frente a ": 8080" y otros problemas de conexión de puertos.
Para enumerar conexiones remotas al servidor RDP local, por ejemplo:
netstat -an | findstr /r /c:":3389 *[^ ]*:[^ ]*"
O para ver quién está tocando tu DNS:
netstat -an | findstr /r /c:":53 *[^ ]*:[^ ]*"
Si desea excluir puertos solo locales, puede usar una serie de excepciones con "/ v" y caracteres de escape con una barra diagonal inversa:
netstat -an | findstr /v "0.0.0.0 127.0.0.1 \[::\] \[::1\] \*\:\*" | findstr /r /c:":80 *[^ ]*:[^ ]*"
Para el puerto 80, el comando sería: netstat -an | encuentre "80" Para el puerto n, el comando sería: netstat -an | encontrar "n"
Aquí, netstat es la instrucción para su máquina
-a: muestra todas las conexiones y puertos de escucha -n: muestra todas las direcciones e instrucciones en formato numérico (esto es necesario porque la salida de -a puede contener nombres de máquinas)
Luego, un comando de búsqueda para "Coincidencia de patrones" la salida del comando anterior.
En RHEL 7, uso este comando para filtrar varios puertos en estado ESCUCHAR:
sudo netstat -tulpn | grep LISTEN | egrep '(8080 |8082 |8083 | etc )'
Este comando mostrará todos los puertos y su dirección de destino:
netstat -f
Use el comando lsof "lsof -i tcp: port #", aquí hay un ejemplo.
$ 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
solo es lento si no usa el-n
interruptor, lo que significa que tiene que hacer muchas búsquedas de DNS.