Busybox, netstat, no -p

10

J'ai un BusyBox ultra ancien (ne demandez pas pourquoi) (BusyBox v1.01 (2008.12.19-21: 31 + 0000) Coque intégrée (ash)) sur ma DreamBox. Je voudrais savoir quel processus a ouvert quelle connexion en utilisant netstat. Mais j'ai découvert que netstat de BusyBox ne contient pas l' option -p . Quelles autres possibilités ai-je pour savoir quel processus a ouvert (et utilise) le socket correspondant?

a1337q
la source
Lsof fait-il partie de cette version de busybox?
Zoredache
Malheureusement non.
a1337q

Réponses:

15

Vous pouvez trouver les informations équivalentes sous une forme légèrement plus laide (aka hexadécimal) dans /proc/net/tcp. Là, vous pouvez trouver l'inode de la connexion, sous lequel vous pouvez rechercher /proc/$pid/fd/.

Par exemple:

$ cat /proc/net/tcp
sl  local_address rem_address   st tx_queue rx_queue tr tm->when retrnsmt   uid  timeout inode
 0: 00000000:0016 00000000:0000 0A 00000000:00000000 00:00000000 00000000     0        0 6115 1 f5adc4c0 300 0 0 2 -1
...

(Dans netstat normal, mais pas dans netbox occupé, l' -eoption vous donne également ces informations supplémentaires.)

et

$ sudo ls -l /proc/2560/fd
...
lrwx------ 1 root root 64  7 jan 22.50 3 -> socket:[6115]

Vous avez besoin d'un accès root pour la deuxième étape.

Pas aussi pratique que l' -poption, évidemment, mais fonctionne dans une liaison. Peut être scripté, si nécessaire.

Peter Eisentraut
la source
Cela semble cool, mais mon netstat ne fonctionne pas comme il se doit, il ne produit rien de plus avec l' option -e . J'ai également 6 colonnes avec -e : Proto, Recv-Q, Send-Q, Adresse locale, Adresse étrangère, État. Y a-t-il un moyen avec les ports? Je peux voir le port ..
a1337q
Tu as raison, j'ai dû gâcher mes tests. Je l'ai édité pour vous donner une solution de travail.
Peter Eisentraut
1
Comment trouvez-vous le nombre "2560" que vous tapez dans votre deuxième commande? Voilà la question.
ygoe
@ygoe vous devez l'utiliser 6115et l'utiliser comme ceci:find /proc/ -type l | grep /fd/ | xargs ls -la 2>/dev/null | grep 6115
Sam
3

Cela peut ne pas aider, si vous n'avez pas la possibilité de reconstruire Busybox, mais au cas où cela aiderait quelqu'un ...

Busybox dispose d'une option de configuration pour prendre en charge le -pbasculement de Busyboxnetstat . Voir l'option CONFIG_FEATURE_NETSTAT_PRG, sélectionnée dans busybox menuconfig via Networking Utilities → netstat → Enable PID / Program name output .

Craig McQueen
la source
0

Si vous avez ou pouvez obtenir sssur votre appareil, il peut aussi vous montrer le PID:

ss -ltp # for TCP
ss -lup # for UDP
krupan
la source