Je peux lire le fichier /proc/$PID/net/tcp par exemple et obtenir des informations sur les ports TCP ouverts par le processus.
Ce fichier n'est pas une liste de ports tcp ouverts par le processus . Il s'agit d'une liste de tous les ports TCP ouverts dans l'espace de noms réseau actuel, et pour les processus exécutés dans le même espace de noms réseau, il est identique au contenu de /proc/net/tcp
.
Pour trouver les ports ouverts par votre processus, vous devez obtenir une liste des descripteurs de socket à partir de /proc/<pid>/fd
, puis associez ces descripteurs au inode
champ de /proc/net/tcp
.
S'il vous plaît
cat /proc/$PID/net/tcp
et vous obtiendrez une sortie comme celle-ci
sl local_address rem_address st tx_queue rx_queue tr tm->when retrnsmt uid timeout inode
0: 00000000:01BB 00000000:0000 0A 00000000:00000000 00:00000000 00000000 0 0 2891985097 1 0000000000000000 100 0 0 10 0
La deuxième colonne (local_address) de la sortie affiche le port en hexadécimal. Utilisez votre calculateur de programmation pour convertir le code hexadécimal en décimal.
Par exemple ici, le port :01BB (en hexadécimal) est égal à 433 (en décimal) qui est le port HTTPS par défaut.