lunes, 20 de abril de 2015

Que puerto con que proceso? - Solaris

El día de hoy, el administrador de redes me consultó por un puerto caído de un Solaris, el 8080.

Para averiguarlo usé el comando netstat -an | grep 8080 el cual me arrojaba salidas que no correspondían a dicho puerto:
root@server # netstat -an | grep 8080
192.168.0.78.18080 192.168.4.20.59275 65536 0 49680 0 ESTABLISHED
192.168.0.78.28080 *.* 0 0 49152 0 LISTEN
*.18080 *.* 0 0 49152 0 LISTEN
192.168.0.78.18080 192.168.4.144.4159 63122 0 49680 0 ESTABLISHED
Si el puerto estuviese bloqueado, lo podríamos ver en la salida anterior.

Dada esta situación, informé que no había inconvenientes a nivel de red en el servidor y que lo caído era el servicio que utilizaba el puerto. Necesitaba que el responsable de aplicaciones me informe cual era el servicio que allí corría para poder levantarlo. Pero como sucede en muchas ocasiones, el responsable no sabía que servicio era. Afortunadamente tenemos otro servidor realizando una actividad similar y entonces simplemente busqué cual era la actividad del puerto, correspondiente a algún proceso, con el siguiente script:
#!/bin/ksh
line='---------------------------------------------'
pids=$(/usr/bin/ps -ef | sed 1d | awk '{print $2}')
if [ $# -eq 0 ]; then
read ans?"Ingrese el puerto para conocer su PID: "
else
ans=$1
fi
for f in $pids
do
/usr/proc/bin/pfiles $f 2>/dev/null | /usr/xpg4/bin/grep -q "port: $ans"
if [ $? -eq 0 ]; then
echo $line
echo "El puerto $ans está siendo usado por el PID:\c"
/usr/bin/ps -ef -o pid -o args | egrep -v "grep|pfiles" | grep $f
fi
done
exit 0

La salida del script fue la siguiente:
server
# ./puerto-proceso.sh
ingrese
el puerto para conocer su PID: 8080
---------------------------------------------
El puerto 8080 está siendo usado por el PID:25722
/usr/java/jdk1.6.0_12/bin/java -Dprogram.name=run-get.sh -server-Xms2048m
---------------------------------------------
El puerto 8080 está siendo usado por el PID:23040
/usr/java/jdk1.6.0_12/bin/java -Dprogram.name=run-normal.sh -server-Xms2048m  

Solucionado, ahora depende 100% del responsable de aplicaciones.

No hay comentarios:

Publicar un comentario