it-swarm.com.de

Wie kann ich tcpdump die entsprechenden Daten in eine Datei schreiben und standardmäßig ausgeben lassen?

Ich möchte, dass tcpdump rohe Paketdaten in eine Datei schreibt und die Paketanalyse in der Standardausgabe anzeigt, wenn die Pakete erfasst werden (mit Analyse meine ich die Zeilen, die normalerweise angezeigt werden, wenn -w fehlt). Kann mir bitte jemand sagen, wie das geht?

44
user2565010

Hier ist eine gute Möglichkeit, um das zu tun, was Sie wollen:

tcpdump -w - | tee somefile | tcpdump -r -

Was es macht:

  • -w - weist tcpdump an, Binärdaten in stdout zu schreiben
  • tee schreibt diese Binärdaten in eine Datei UND in eine eigene stdout
  • -r - weist den zweiten tcpdump an, seine Daten aus seinem stdin zu beziehen
93
cnicutar

Wenn Sie dies tun möchten, ohne tcpdump zweimal auszuführen, sollten Sie Folgendes berücksichtigen:

Sudo tcpdump port 80 -w $(tty) | tee /tmp/output.txt

Über die interaktive Eingabeaufforderung könnten Sie $TTY Anstelle von $(tty) verwenden, aber in einem Skript würde das erstere nicht festgelegt (obwohl ich nicht sicher bin, wie häufig es ist, tcpdump in a auszuführen) Skript).

Randnotiz: Es ist nicht sehr Unix-y, wie Sie mit tcpdump standardmäßig in eine Datei schreiben. Programme sollten standardmäßig auf stdout schreiben. Die Umleitung in eine Datei wird bereits von den Shell-Konstrukten bereitgestellt. Vielleicht gibt es einen guten Grund, warum tcpdump so entworfen wurde, aber ich weiß nicht, was das ist.

0