Die kurzen Antworten sind nein und nicht leicht.
Unter Linux ist lsof darauf angewiesen /proc/net/unix
, die Informationen zu UNIX-Domain-Sockets abzurufen. Diese Schnittstelle listet alle gebundenen Sockets auf, verfolgt jedoch nicht die Endpunkte. Sie können also sehen, welche Sockets vorhanden sind, aber Sie können nicht sehen, was mit ihnen verbunden ist. Irgendwo diese Information wird verfolgt, sie verfolgt werden müssen oder aber die Steckdosen - Verbindungen nicht funktionieren würde. Ich habe noch keinen Mechanismus zum Abrufen der Verbindungsinformationen gefunden.
Die Schnüffelfrage ist etwas interessanter, aber nicht weniger enttäuschend. Was ich mit "nicht einfach" gemeint habe, ist, dass es keinen Haken gibt, um sich in diese Daten einzuschleichen und sie zu erfassen. Das nächste Analogon ist die Verwendung von tcpdump oder Wireshark, die beide libpcap verwenden, um das schwere Heben tatsächlich durchzuführen. Während Netzwerk (AF_INET) und UNIX-Domäne (AF_UNIX) beide mithilfe des socket()
Funktionsaufrufs erstellt werden connect()
, werden beide zum Herstellen einer Verbindung, zum Verwenden read()
und write()
Verarbeiten von Daten verwendet. Sie werden von verschiedenen Kernel-Subsystemen verarbeitet. Dies hat den unglücklichen Nebeneffekt, dass libpcap nicht für die Verwendung mit UNIX-Domänensockets ausgelegt ist.
Das Problem hat eine etwas weniger dunkle Seite. Schauen Sie sich die Manpage für an recv(2)
. Dies ist ein untergeordneter Systemaufruf, read()
der verwendet wird. Es gibt eine Flagge für recv()
aufgerufen MSG_PEEK
. Auf diese Weise können Sie den Datenverkehr über einen UNIX-Domänensocket abhören. Das ist also die helle Seite, die dunkle Seite ist, dass es meines Wissens keine aktuelle Anwendung gibt, die dafür entwickelt wurde. Sie sehen also einige Entwicklungsanstrengungen.
Ich wünschte , es wirklich war eine schöne einfache Antwort von F'YEAH auf beiden Teile Ihrer Frage.