¿Cómo limitar la salida de texto de iftop?

¿Cómo limitar la salida de texto de iftop?

¿Cómo decirle a la herramienta iftopque imprima una vez una instantánea de las conexiones activas sin realizar ciclos mientras está en modo texto?

iftop -t -i  eth2

Respuesta1

Parece que no hay manera dedecir iftop -tpara imprimir un fragmento y no hacer un bucle.

A modo de comparación: top -b -n 1puedes hacer lo que quieras, la opción relevante es -n 1. Es una herramienta diferente, pero este ejemplo muestra lo fácil que puede ser cuando la herramienta admite la opción (nota: iftopse entiende -n, pero es unadiferente, opción no relacionada).

Aún así, puedes analizar la salida y detenerte después del primer fragmento. En mi Debian 10 iftop -ttermina cada fragmento con una línea que consta de muchos =caracteres. Parece ^==una buena expresión regular para detectar el final de un fragmento sin falsos positivos.

Este comando sale después del primer fragmento:

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

Alternativamente:

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

Para salir después del enésimo fragmento necesitamos un código más complejo. En el siguiente ejemplo N es 3. Ajústalo n=3a tus necesidades:

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

Notas:

  • Cuando awk(o sed) sale, iftopno se le notifica inmediatamente. Sólo lo consigue SIGPIPEcuando intenta escribir algo más en la tubería ahora rota. Esto significa que todo el comando se detendrá hasta que iftop genere otro fragmento (que no se imprimirá). Esto es normal. La optimización iftopen este asunto no tiene mucho sentido, no es que vaya a estancarse para siempre. Compararcómo tiene sentido paratail.
  • Si el comando completo se imprime en la consola, es posible que vea que la salida se detiene a mitad del fragmento. Este comportamiento es diferente al de la salida desde sole, iftop -tdonde aparecen fragmentos completos con pausas en el medio. La culpa la tiene la amortiguación entre iftopy . awken mis pruebasstdbuf -oL iftop …ayudó.
  • iftopimprime algunos mensajes en stderr. No pasarán por la tubería, a menos que uses iftop … 2>&1 | ….

información relacionada