Buscar aquí

03 mayo 2012

Que servicio tiene abierto el puerto X ?

Es una pregunta muy comun y por desgracia, uno se suele dar varias vueltas antes de saber eso.  Sin embargo, en linux, es fácil pues el netstat tiene una opcion -p que muestra el programa asociado al puerto, pero HP UX, no tiene esta opción pero sí, existe lsof.

Muy importante antes es que se debe ejecutar con el usuario root, para tner acceso completo a la información de los procesos del sistema.

Lsof es un comando muy potente, que al ejecutarlo sin opciones, muestra todos los archivos abiertos en el sistema... por ello la lista será muuuuuy larga.  Cómo ayuda lsof a encontrar la aplicación que utiliza el puerto, muy simple, con el switch -i, se debe ejecutar algo así:

Si quiero saber que aplicación tiene abierto el puerto 3001, que al filtrar la salida de netstat me muestra algo así:

tcp        0      0  *.3001                 *.*                     LISTEN

Ahora ejecuto:

lsof -i :3001                        

Nótese el : es obligatorio, entonces obtengo:

servidor1:> lsof -i :3001
COMMAND     PID  USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
comando1 14892 temip   12u  inet 0xe00000032c54f080      0t0  TCP *:3001 (LISTEN)

Y aquí esta la respuesta, la aplicación comando1, cuyo PID es 14892, tiene levantado el puerto TCP 3001

Actualización:  otro detalle importante es que si existen muchas conexiones, intentará resolver los nombres de los servidores, para evitar la demora que pueda significar esto y muestre más rápido la información en sólo números, tanto para la dirección IP y el puerto se puede agregar la opción -nP, donde:

n es para que muestre la IP del servidor, y
P es para que muestre el número de puerto, no el nombre del servicio si está registrado en el el /etc/services

siendo más óptimo el comando: lsof -nP -i :3001


No hay comentarios.:

Publicar un comentario