Ich überwache einen bestimmten Port, weil meine Anwendung diesen Port verwendet. Es scheint, dass die Verbindung zu zufälligen Zeiten abbricht. Ich möchte sehen, welche Pakete zuletzt durchgegangen sind, bevor die Verbindung abbricht: Ich habe diese Zeile verwendet
sudo tcpdump -XX -i eth0 port 3050 | tail >> tcpamir.txt
aber damit es funktioniert, muss ich ein anderes Terminal starten und ausgeben
sudo killall tcpdump
Gibt es einen besseren Ansatz? EDIT1: Es ist wichtig, nur die letzten Pakete zu erfassen, da ich nicht möchte, dass die Datei zu groß wird, da genügend Datenverkehr vorhanden ist, um den Speicherplatz schnell zu füllen.
Antwort1
Ok, ich glaube, ich habe eine gefundenLösung:
sudo tcpdump -XX -i eth0 -w tcpamir-%s.txt -G 10 port 3050
Dadurch wird Ihre Ausgabedatei alle 10 Sekunden in eine neue Datei namenstcpamir-<unixtimestamp>.txt
Sie können die Ausgabedatei auch so ändern, dass sie sich jeden Tag selbst überschreibt, wenn Sie sich über die Größe der ausstehenden Datei Sorgen machen. Weitere Informationen finden Sie unter man 3 strftime
.
Ich denke an so etwas wie
sudo tcpdump -XX -i eth0 -w tcpamir-%R.txt -G 86400
Wobei %R
die Uhrzeit im 24-Stunden-Format angegeben wird (z. B. 12:40).
Lesen Sie relevante Ausgabedateien mit
sudo tcpdump -r tcpamir-<unixtimestamp>.txt
Zweite Lösung:
Teilen Sie es in mehrere Befehle auf und speichern Sie es als Skript/Funktion:
sudo tcpdump -XX -i eth0 port 3050 >> tcptmp.txt
sudo tail -n100 tcptmp.txt >> tcpamir.txt
sudo rm tcptmp.txt
Antwort2
Wenn Sie nur den gesamten erfassten Datenverkehr schreiben möchten, müssen Sie nur -w zur Zeile hinzufügen und entfernen'| Ende >> tcpamir.txt'
# tcpdump -XX -i eth0 port 3050 -w tcpamir.cap
Wenn Sie die Aufnahme in Wireshark analysieren möchten, muss die Erweiterung .cap sein. Wenn Sie sicherstellen, dass die Aufnahme abgeschlossen ist, können Sie dies mit beendenStrg + C
HINWEIS: -w [Dateiname.cap], um die Aufnahme in eine Datei zu schreiben