netstat: n: unbekanntes oder nicht instrumentiertes Protokoll

10

Ich benutze immer netstat auf Ubuntu, um zu überprüfen, welche Prozesse auf bestimmten Ports lauschen. Ich benutze die folgenden Schalter mit netstat, die auf Ubuntu gut funktionieren, aber auf einem Mac fehlschlagen:

sudo netstat -tulpn
netstat: n: unknown or uninstrumented protocol
John Merlino
quelle
-p erfordert ein Protokollman netstat
Hoss

Antworten:

11

Die Befehlsoptionen von Linux netstatund OS X (/ BSD) haben fast nichts miteinander zu tun. Von den Optionen, die Sie aufrufen, -nbedeutet dies nur für beide dasselbe, und einige der anderen ( -lund -p) haben unter OS X keine Entsprechung netstat. Was ich unter OS X gewöhnlich benutze, ist netstat -an | grep LISTEN, aber das zeigt weder UDP noch das betreffende Programm. Ich nehme an, Sie könnten netstat -an | egrep '^udp|LISTEN'UDP einschließen, aber das ist ziemlich ausführlich (und Sie werden auch einiges an Unsinn-UDP-Zeug sehen, da es im Vergleich zu anderen Staaten kein wirkliches Konzept für UDP-Listening gibt). Wenn Sie das Programm kennen müssen, müssen Sie zum lsofBefehl (Liste offener Dateien) wechseln. Dazu ist Root-Zugriff erforderlich, um Prozesse zu überprüfen, die Sie nicht besitzen. Versuchen Sie etwas wiesudo lsof -nPi -sTCP:LISTEN

Bearbeiten: Wie @ loic.jaouen in einer anderen Antwort hervorhob, enthält OS X netstatzwar keine direkte Entsprechung zur Linux- -pOption, die -v(ausführliche) Anzeige enthält jedoch die PID des Prozesses, und Sie können den Programmnamen daraus abrufen mit ps.

Gordon Davisson
quelle
3

@ gordon-davisson ist richtig, aber Sie können das pidvon netstatauf Mac mit der verbove-Option erhalten. Ich poste eine Antwort, da mir der Ruf fehlt, seine Antwort zu kommentieren.


Wenn die Frage lautet, wie pidund portin einem netstatBefehl zu erhalten ist, können Sie dennoch Folgendes tun:

netstat -anv

Die ausführliche Option gibt pidin Position 9 Folgendes an:

Proto Recv-Q Send-Q  Local Address          Foreign Address        (state)     rhiwat shiwat    pid   epid
tcp4       0      0  127.0.0.1.3335         *.*                    LISTEN      131072 131072  45710      0

Aber die Ausgabe ist plethorisch, was erträglich ist, wenn Sie wissen, wonach Sie suchen, wie: netstat -anv | grep 3335odernetstat -anv | grep LISTEN

Die Ausgabe von lsofist noch schöner.

loic.jaouen
quelle
0

Sie können Ihren Mac auf einer Netzwerkschnittstelle "abhören" lassen:

Geben Sie ein sudo tcpdump -i en0(gefolgt von Ihrem Administratorkennwort).

Ruskes
quelle