Wie kann die Textausgabe von iftop begrenzt werden?

Wie kann die Textausgabe von iftop begrenzt werden?

Wie kann ich dem Tool mitteilen, iftopdass es im Textmodus einmalig einen Snapshot der aktiven Verbindungen ohne Durchlaufen ausdrucken soll?

iftop -t -i  eth2

Antwort1

Es scheint, als gäbe es keine Möglichkeit,erzählen iftop -tum einen Block zu drucken und nicht zu schleifen.

Zum Vergleich: top -b -n 1kann tun, was Sie wollen, die relevante Option ist -n 1. Es ist ein anderes Werkzeug, aber dieses Beispiel zeigt, wie einfach es sein kann, wenn das Werkzeug die Option unterstützt (Anmerkung: iftopversteht -n, aber es ist einanders, nicht verwandte Option).

Sie können die Ausgabe dennoch analysieren und nach dem ersten Block anhalten. In meinem Debian 10 iftop -twird jeder Block mit einer Zeile beendet, die aus vielen Zeichen besteht =. Dies scheint ^==ein guter regulärer Ausdruck zu sein, um das Ende eines Blocks ohne falsche Positivergebnisse zu erkennen.

Dieser Befehl wird nach dem ersten Block beendet:

iftop -t -i eth2 | sed '/^==/ q'

Alternative:

iftop -t -i eth2 | awk '{print; if ($0 ~ "^==") exit}'

Um nach dem N-ten Block zu beenden, benötigen wir komplexeren Code. Im folgenden Beispiel ist N gleich 3. Passen Sie den Code n=3Ihren Bedürfnissen an:

iftop -t -i eth2 | awk -v n=3 '
   BEGIN {if (n<=0) exit}
   {
       print
       if ($0 ~ "^==") n--
       if (n<=0) exit
   }'

Anmerkungen:

  • Wenn awk(oder sed) beendet wird, iftopwird nicht sofort benachrichtigt. Es wird SIGPIPEnur benachrichtigt, wenn versucht wird, etwas mehr in die jetzt kaputte Pipe zu schreiben. Das bedeutet, dass der gesamte Befehl ins Stocken gerät, bis iftop ein weiterer Block generiert wird (der nicht gedruckt wird). Das ist normal. Eine Optimierung iftopin dieser Hinsicht macht wenig Sinn, es ist ja nicht so, als würde es für immer ins Stocken geraten. Vergleichen Siewie es Sinn macht fürtail.
  • Wenn der gesamte Befehl auf der Konsole ausgegeben wird, kann es sein, dass die Ausgabe mitten im Block pausiert. Dieses Verhalten unterscheidet sich von der Ausgabe von sole, iftop -two vollständige Blöcke mit Pausen dazwischen erscheinen. Die Ursache dafür ist die Pufferung zwischen iftopund awk. In meinen Testsstdbuf -oL iftop …geholfen.
  • iftopdruckt einige Meldungen auf stderr. Sie werden nicht durch die Pipe geleitet, es sei denn, Sie verwenden iftop … 2>&1 | ….

verwandte Informationen