A partir de un script bash, ¿cómo puedo averiguar rápidamente si un puerto 445está abierto / escuchando en un servidor?
He probado un par de opciones, pero quiero algo rápido:
1. lsof -i :445 (Toma segundos)
2. netstat -an |grep 445 |grep LISTEN(Toma segundos)
3. telnet(no regresa)
4. nmap, netcatno están disponibles en el servidor
Será bueno saber de una manera que no enumere primero y greps después de eso.
netstat -lnt(con -ty sin -a) limitará la salida a escuchar solo conexiones TCP. Puede acelerarse un poco. Puede agregar -4para IPv4 solo si no necesita IPv6.
netstat -an | grep PORTNUMBER | grep -i listenSi la salida está vacía, el puerto no está en uso.
lsofes lento para usted, pero normalmente es la mejor de las soluciones que enumeró. Su netstatsolución no es muy confiable (puede adivinarla siempre que la use grep; de todos modos, devuelve verdadero si alguien está escuchando, por ejemplo, 4450). telnete netcatintenta crear una conexión, que no siempre es lo que quieres.