¿Hay algún comando de línea de comando o alguna otra forma de encontrar y enumerar los números de puerto ocupados y libres en mi máquina Linux?
fuente
¿Hay algún comando de línea de comando o alguna otra forma de encontrar y enumerar los números de puerto ocupados y libres en mi máquina Linux?
El comando
netstat -antu
mostrará todos los puertos tcp y udp en uso. La salida se verá más o menos así:
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:59753 0.0.0.0:* LISTEN
El número después de los dos puntos en el campo Dirección local muestra el puerto en uso. Si el estado es "ESCUCHAR" significa un puerto que está utilizando para las conexiones entrantes. Si la dirección IP en elLocal Address
campo es 0.0.0.0
, significa que las conexiones entrantes serán aceptadas en cualquier dirección IP asignada a una interfaz, lo que significa que las conexiones se originan fuera de su máquina.
Si decía localhost
o 127.0.0.1
solo aceptaría conexiones de su máquina.
Además, si agrega el -p
parámetro y lo ejecuta como root, mostrará el proceso que abrió el puerto:
$ sudo netstat -antup
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:59753 0.0.0.0:* LISTEN 860/rpc.statd
Todo lo que no se muestre como en uso es gratuito, sin embargo, los usuarios (cuentas sin privilegios) solo pueden abrir puertos superiores a 1023.
-antu
se puede escribir como-tuna
🐟Compilé un pequeña lista .
Algunos de mis favoritos son:
fuente
Una forma buena y confiable de verificar los puertos abiertos es usar
ss
(reemplazo para los obsoletosnetstat
), es utilizable en un script sin requerir privilegios elevados (es decirsudo
).Uso: opción
-l
para escuchar puertos, opción-n
para omitir la resolución DNS y el filtro en el puerto de origenNN
:src :NN
(reempláceloNN
por el puerto que desea monitorear). Para más opciones, veaman ss
Ejemplos:
Y en un script, usando grep, podemos probar si la salida contiene el puerto que solicitamos. Ejemplo con el puerto 80 en uso (ver arriba):
Ejemplo con el puerto 81 no en uso (ver arriba)
fuente
De otra manera:
Si el puerto está libre, recibirá un error. Si el puerto está en uso, Telnet se conectará.
(encontrado en http://www.unix.com/unix-for-dummies-questions-and-answers/8456-how-know-whether-particular-port-number-free-not.html )
fuente