Busybox, netstat, no -p

10

Ich habe eine extrem alte BusyBox ( fragen Sie nicht warum) (BusyBox v1.01 (2008.12.19-21: 31 + 0000) Eingebaute Shell (Asche)) auf meiner DreamBox. Ich möchte mit netstat herausfinden, welcher Prozess welche Verbindung geöffnet hat. Aber ich habe herausgefunden, dass der netstat von BusyBox die Option -p nicht enthält . Welche anderen Möglichkeiten muss ich haben, um herauszufinden, welcher Prozess den entsprechenden Socket geöffnet hat (und verwendet)?

a1337q
quelle
Ist lsof Teil dieser Version von Busybox?
Zoredache
Leider nicht.
a1337q

Antworten:

15

Sie finden die entsprechenden Informationen in etwas hässlicherer Form (auch bekannt als hexadezimal) in /proc/net/tcp. Dort finden Sie den Inode der Verbindung, unter dem Sie nachschlagen können /proc/$pid/fd/.

Beispielsweise:

$ 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
...

(In normalem Netstat, aber nicht in Busybox Netstat, -ebietet Ihnen die Option auch diese zusätzlichen Informationen.)

und

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

Für den zweiten Schritt benötigen Sie Root-Zugriff.

Natürlich nicht so praktisch wie die -pOption, funktioniert aber in einer Bindung. Könnte bei Bedarf per Skript erstellt werden.

Peter Eisentraut
quelle
Klingt cool, aber mein netstat funktioniert nicht wie es sollte, es gibt mit der Option -e nichts zusätzliches aus . Ich habe 6 Spalten auch mit -e : Proto, Recv-Q, Send-Q, lokale Adresse, ausländische Adresse, Staat. Gibt es einen Weg mit den Ports? Ich kann den Hafen sehen ..
a1337q
Du hast recht, ich muss meine Tests durcheinander gebracht haben. Ich habe es bearbeitet, um Ihnen eine funktionierende Lösung zu geben.
Peter Eisentraut
Wie finden Sie die Nummer "2560", die Sie in Ihrem zweiten Befehl eingeben? Das ist die Frage.
Ygoe
@ygoe müssen Sie verwenden 6115und verwenden Sie es wie folgt :find /proc/ -type l | grep /fd/ | xargs ls -la 2>/dev/null | grep 6115
Sam
3

Dies kann nicht helfen, wenn Sie nicht die Möglichkeit haben, Busybox neu zu erstellen, aber falls es jemandem hilft ...

Busybox verfügt über eine Konfigurationsoption zur Unterstützung des -pWechsels von Busyboxnetstat . Siehe Option CONFIG_FEATURE_NETSTAT_PRG, die in der Busybox-Menükonfiguration über Netzwerkdienstprogramme → netstat → PID- / Programmnamenausgabe aktivieren ausgewählt wurde .

Craig McQueen
quelle
0

Wenn Sie ssIhr Gerät haben oder darauf zugreifen können, kann es Ihnen auch die PID anzeigen:

ss -ltp # for TCP
ss -lup # for UDP
Krupan
quelle