Beenden Sie den von SSH gestarteten TCPdump-Prozess, wenn SSH stirbt.

Beenden Sie den von SSH gestarteten TCPdump-Prozess, wenn SSH stirbt.

Wir führen eine Remote-Erfassung unter tcpdumpUnix durch. Immer wenn SSH beendet wird (durch eine Unterbrechung, z. B. durch Strg+C oder etwas anderes), muss es tcpdumpam anderen Ende gestoppt/beendet werden.

Wir haben die meisten der aufgelisteten Optionen zum Beenden eines von SSH gestarteten Prozesses ausprobiert, wenn SSH beendet wird. Für tcpdump ist SSH mit -t nicht praktikabel, da es am Anfang eine unerwartete Zeile voranstellt.

Wenn also jemand bereits an derartigen Problemen gearbeitet hat, würden wir gerne eine gute Lösung dazu erfahren.

Ich führe es tcpdumpremote als Root wie folgt aus:

ssh {remotehost} "tcpdump -i eth0 -s 0 -w - " > /tmp/local_file

Danke.

Antwort1

Wenn Sie es remote ausführen und den Prozess beenden ssh, sollte das andere Ende beendet werden. Es sei denn, Sie lassen dieses Ende aus irgendeinem Grund anhalten. In diesem Fall möchten Sie es möglicherweise als Teil eines größeren Skripts im Hintergrund ausführen.

Sie sollten Root auch nicht remote verwenden und Sie benötigen Root auf der Seite, die SSH ausführt, ganz sicher nicht. Vermeiden Sie es, als Root zu arbeiten, wenn möglich. Verwenden Sie einen Remote-Benutzer mit sudoentsprechenden Berechtigungen.

Sie benötigen wahrscheinlich auch „w -“ nicht, da tcpdumpstandardmäßig in stdout geschrieben wird.

Sie können auch tcpdumpdie Anzahl der erfassten Pakete begrenzen, um die Sitzung besser zu kontrollieren. Bitte beachten Sie, dass Sie Port 22 vom System ausschließen müssen, da sshdas Remote-System sonst die aktuelle Sitzung auf eine Art selbsterhaltende rekursive Weise erfasst.

Um 1000 Pakete zu erfassen, könnten Sie Folgendes tun:

$ssh [email protected] "sudo tcpdump -i eth0 -s0 -c 1000 not port 22" > /tmp/local_file

Eine weitere, weniger saubere Alternative ist das anschließende Ausführen eines pkill:

$ssh ..."sudo tcpdump"
$ssh ..."pkill tcpdump"

Als letzte Warnung: /tmpDas Stammverzeichnis, in dem es sich befindet, befindet sich häufig in begrenzten Dateisystemen oder im RAM. Es ist auch ein Sicherheitsrisiko, vorhersehbare Namen in einem /tmp-Verzeichnis zu erstellen, insbesondere als privilegierter Benutzer. Möglicherweise möchten Sie einen anderen Speicherort für die Erfassungsdatei verwenden.

Sie können als Systemadministrator auch bessere Ergebnisse erzielen, wenn Sie in ein Tool wie investieren ansible. Informationen zur Automatisierung oder Verwendung komplexerer Tools für die Remote-Administration finden Sie unterLinux-Äquivalent zu PowerShells „One-to-Many“-Remoting

verwandte Informationen