wsus verificar tag puertos puerto poner escucha configuracion active abiertos windows batch-file tcp cmd

windows - tag - Verificar el estado de un puerto en el host remoto



tag spaces (8)

Necesito una línea de comando que pueda verificar el estado del puerto en un host remoto. Intenté hacer ping xxx.xxx.xxx.xxx:161 pero no reconoce el "host". Pensé que era una respuesta "buena" hasta que hice el mismo comando contra un host que sé que tiene ese puerto abierto. Esto es para un archivo por lotes en Windows que verificará el estado del puerto remoto y luego ejecutará un comando que usa ese puerto remoto para obtener información, luego el comando de verificación remota del puerto nuevamente, luego el comando que usa ese puerto en el siguiente servidor para obtener información , y así. Miré a todas partes y pensé que el ping podría hacerlo, pero debe haber varias versiones de ping, supongo que el servidor en el que estoy haciendo esto no muestra esa opción.

Solo por una risa, probé un comprobador de puerto remoto basado en la web desde un sitio web, y los resultados fueron correctos tanto para el servidor "problemático" como para el servidor correcto. Sin embargo, no puedo usar eso en una ejecución por lotes con más de 500 IP de servidor.

¿Hay algo que pueda hacer que sea simple? Mis habilidades de Perl están extremadamente oxidadas (lo usa o lo pierde), no conozco ningún otro idioma basado en Windows, excepto el lote. Unix es mi habilidad, pero esto debe ejecutarse desde Widows Server 2003.


Creo que estás buscando Hping ( http://www.hping.org/ ), que tiene una versión de Windows.

"La interfaz está inspirada en el comando ping (8) Unix, pero hping no solo puede enviar solicitudes de eco ICMP. Es compatible con TCP, UDP, ICMP ..."

También es muy útil si desea ver a lo largo de una ruta que un puerto TCP está siendo bloqueado (como por un firewall), donde ICMP podría no estar.


En Bash, puede usar archivos de pseudodispositivos que pueden abrir una conexión TCP al socket asociado. La sintaxis es /dev/$tcp_udp/$host_ip/$port .

Aquí hay un ejemplo simple para probar si Memcached se está ejecutando:

</dev/tcp/localhost/11211 && echo Port open || echo Port closed

Aquí hay otra prueba para ver si un sitio web específico es accesible:

$ echo "HEAD / HTTP/1.0" > /dev/tcp/example.com/80 && echo Connection successful. Connection successful.

Para obtener más información, consulte: Guía avanzada de scripts de Bash: Capítulo 29. /dev y /proc

Relacionado: prueba si un puerto en un sistema remoto es alcanzable (sin telnet) en SU


En Símbolo del sistema, puede usar el comando telnet .. Por ejemplo, para conectarse a IP 192.168.10.1 con el puerto 80,

telnet 192.168.10.1 80

Para habilitar telnet en Windows 7 y superior, click . Desde el artículo vinculado, habilite telnet a través del panel de control -> programas y características -> características de Windows -> telnet cliente, o simplemente ejecútelo en un indicador de administrador:

dism /online /Enable-Feature /FeatureName:TelnetClient


Para propósitos de scripting, he encontrado que el comando curl puede hacerlo, por ejemplo:

$ curl -s localhost:80 >/dev/null && echo Connected. || echo Fail. Connected. $ curl -s localhost:123 >/dev/null && echo Connected. || echo Fail. Fail.

Posiblemente no funcionará para todos los servicios, ya que curl puede devolver diferentes códigos de error en algunos casos (según el comentario), por lo que agregar la siguiente condición podría funcionar de manera confiable:

[ "$(curl -sm5 localhost:8080 >/dev/null; echo $?)" != 7 ] && echo OK || echo FAIL

Nota: Se agregó -m5 para establecer el tiempo máximo de conexión de 5 segundos.

Si desea verificar también si el host es válido, también debe verificar el código de salida 6 :

$ curl -m5 foo:123; [ $? != 6 -a $? != 7 ] && echo OK || echo FAIL curl: (6) Could not resolve host: foo FAIL

Para solucionar el código de error devuelto, simplemente ejecute: curl host:port , eg:

$ curl localhost:80 curl: (7) Failed to connect to localhost port 80: Connection refused

Consulte: man curl para obtener una lista completa de los códigos de salida.


Parece que está buscando un escáner de puertos como nmap o netcat , ambos disponibles para Windows, Linux y Mac OS X.

Por ejemplo, busque telnet en una IP conocida:

nmap -A 192.168.0.5/32 -p 23

Por ejemplo, busque puertos abiertos del 20 al 30 en host.example.com:

nc -z host.example.com 20-30


Presione Windows + R escriba cmd y Enter

En el símbolo del sistema, escriba

telnet "machine name/ip" "port number"

Si el puerto no está abierto, aparecerá este mensaje:

"Connecting To "machine name"...Could not open connection to the host, on port "port number":

De lo contrario, accederá al puerto abierto (se mostrará una pantalla vacía)


Use el comando nc,

nc -zv <hostname/ip> <port/port range> For example, nc -zv localhost 27017-27019 or nc -zv localhost 27017

También puedes usar el comando telnet

telnet <ip/host> port


nc o ''netcat'' también tiene un modo de escaneo que puede ser útil.