Netstat AIX
| Fiche express | |
|---|---|
| Domaine | Script de diagnostic — sockets en écoute |
| Contexte | AIX |
| Dépend de | netstat -Ana · rmsock
|
| Voir aussi | Netstat · Procs script · Errlog |
Sous AIX, netstat -a liste les sockets en écoute mais ne donne pas directement le
nom du processus propriétaire (contrairement à netstat -p sous Linux). Ce script
comble ce manque : il croise la sortie de netstat -Ana avec la commande
rmsock (utilisée ici en lecture seule, sans argument de suppression, uniquement pour
résoudre l'adresse du bloc de contrôle socket en PID/nom de processus) pour produire un tableau
lisible des ports TCP et UDP en écoute avec leur processus.
Principe
Pour chaque ligne LISTEN (TCP) ou udp (UDP) de
netstat -Ana, le script récupère l'adresse du socket (première colonne) et
interroge rmsock <adresse> tcpcb (ou inpcb pour UDP), qui
renvoie en réalité les informations du socket — y compris le PID et le nom du processus — sans
effectuer de suppression tant qu'aucune action de fermeture n'est demandée. Le résultat est
dédoublonné (sort | uniq) et mis en forme en tableau.
Script
#!/bin/ksh93
OS_NAME=$( uname -s )
if [[ $OS_NAME == "AIX" ]] ; then
echo "--------------------------------------------------------------------------------------"
printf "| %-20s | %-15s | Protocol | %-30s |\n" "Process" "PID" "Listening On"
echo "--------------------------------------------------------------------------------------"
netstat -Ana | awk '
/[0-9\*].[0-9].+LISTEN/ {
SOCKET=$1;
IPPORT=$5;
"rmsock " SOCKET " tcpcb" | getline SOCKOUT;
split(SOCKOUT, sockarray, " ");
gsub(/[\.\(\)]/, "", sockarray[10]);
LISTENERS[ sprintf("| %-20s | %15d | %8s | %30s |", sockarray[10], sockarray[9], "TCP", IPPORT) ] = 1;
}
/udp.*.[0-9]/ {
SOCKET=$1;
IPPORT=$5;
"rmsock " SOCKET " inpcb" | getline SOCKOUT;
split(SOCKOUT, sockarray, " ");
gsub(/[\.\(\)]/, "", sockarray[10]);
LISTENERS[ sprintf("| %-20s | %15d | %8s | %30s |", sockarray[10], sockarray[9], "UDP", IPPORT) ] = 1;
}
END {
for (var in LISTENERS)
print var
}' | sort | uniq
echo "--------------------------------------------------------------------------------------"
else
echo "ERROR: Requires AIX"
exit 1
fi
Sortie attendue
Un tableau du type :
| Process | PID | Protocol | Listening On | | sshd | 262272 | TCP | 22 | | httpd | 327812 | TCP | 443 |
(à vérifier) : sur les AIX récents, rmsock reste documenté comme outil de
diagnostic (fait aussi partie de la suite fournie avec la commande netstat), à
utiliser avec prudence en dehors de ce script — un appel non maîtrisé peut fermer un socket actif.