AIX 7.1 avoir le Process ID (PID) avec netstat.

1. Avant-propos
1.1. Présentation
1.2. Introduction
2. Prise d'information
2.1. Utilisateur OS
2.2. Vérifié que vous n'avez pas lsof
3. Script
3.1. Code source du script
3.2. Execution du script
4. Conclusion
4.1. Lien de la documentation IBM sur le sujet

1. Avant-propos


1.1. Présentation.


+-----------------------------+ 
| Serveur WebSphere 8.5          | 
| Hostname : arecibo               | 
| Os : Aix 7.1                               | 
| DMGR : areciboNetwork       | 
| NODE : areciboNode             | 
+-----------------------------+ 

1.2. Introduction


Lorsque le commande LSOF n'existe pas sur votre serveur, il est difficile de connaitre le PID associé à un port.

2. Prise d'information


La prise d'information permet d'éviter des petites erreurs ayant de grande conséquence.
Ne faite pas l'impasse sur ces étapes.

2.1. Utilisateur OS


Pour connaitre l'utilisateur de l'os tapez la commande suivante :
root@arecibo: / # id
uid=0(root) gid=0(system) groups=2(bin),3(sys),7(security),8(cron),10(audit),11(lp)
root@arecibo: / #

2.2. Vérifié que vous n'avez pas lsof


Pour savoir si vous avez lsof sur le serveur faite un find et si vous trouvez un binaire vérifié qu'il est executable.
Ce qui n'est pas le cas dans notre cas. BEURK...
root@arecibo: / # find / -name lsof -print 2>/dev/null
/apps/toto/tool/lsof
root@arecibo: / # /apps/toto/tool/lsof
lsof: No such file or directory
Could not exec /opt/freeware/sbin/lsof64
root@arecibo: / #

3. Script


3.1. Code source du script


Pour réaliser un lsof avec un script voici le script pour AIX.
#!/usr/bin/ksh
print "Port            PID              Process"
netstat -Aan | grep LISTEN | awk '{print $1 " " $5}' | while read pcb port; do 
        out=`rmsock $pcb tcpcb`
        if echo "$out" | grep "Kernel Extension" > /dev/null; then
                printf "%-15s Kernel Extension\n" "$port"
        else
                pid=`echo "$out" | sed -n 's/.*pro[c]*ess \([0-9][0-9]*\) .*/\1/p'`
                if [ -n "$pid" ]; then
                        proc=`ps -p $pid | tail -n 1 | awk '{print $4}'`
                        printf "%-15s %-16s $proc\n" "$port" $pid
                else
                        echo "Error, Line not recognized \"$out\" for Port $port"
                fi
        fi
done

3.2. Execution du script


Lancer la commande suivante :

root@arecibo: /script # ./lsof_ftu.ksh
Port            PID              Process
*.21            3539102          inetd
*.22            7995476          sshd
*.22            7995476          sshd
*.23            3539102          inetd
*.111           Kernel Extension
..
...
...
..
root@arecibo: /script #


4. Conclusion


4.1 - Lien de la documentation IBM


aucun