¿Cómo puedo formatear la salida de ping en bash?

7

Estoy utilizando la siguiente secuencia de comandos para recorrer una lista de direcciones IP e informar sobre el% de pérdida de paquetes.

También me gustaría que primero se imprimiera la dirección IP, luego su% de pérdida de paquete. Pero no puedo obtener la sintaxis correcta para hacer que esto funcione.

Idealmente, se vería como:

192.168.99.24  25%
192.168.99.23  0%    
etc...

Aquí está mi script:

#!/bin/bash
HOSTS="192.168.99.24 192.168.99.23"
COUNT=10
SIZE=1400
for myHost in $HOSTS
do

    ping -q -n -s $SIZE -c $COUNT $myHost |  grep "packet loss" | awk '{print $7}'

done
    
pregunta IT Dude 23.08.2012 - 22:28

1 respuesta

7

Utilizar

ping -q -n -s $SIZE -c $COUNT $myHost |
    awk -v host=$myhost '/packet loss/ {print host, $7}'

dentro del bucle.

En caso de que solo desee imprimir los hosts con uso de pérdida de paquetes

ping -q -n -s $SIZE -c $COUNT $myHost |
    awk -v host=$myhost '/packet loss/ {if ($7 != "0.0%") print host, $7}'

Nota al margen: grep pattern | awk '{action}' generalmente se puede reemplazar con el awk '/pattern/ {action}' mucho más limpio (y ligeramente más rápido)

    
respondido por el nohillside 23.08.2012 - 22:43

Lea otras preguntas en las etiquetas