7 votos

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

Estoy usando el siguiente script para recorrer una lista de direcciones IP y reportar el % de pérdida de paquetes.

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

Lo ideal sería que se viera así:

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

7voto

Utilice

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

dentro del bucle.

En caso de que sólo quiera imprimir los hosts con pérdida de paquetes utilice

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}' puede ser sustituido por el mucho más limpio (y ligeramente más rápido) awk '/pattern/ {action}'

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X