Come posso formattare l'output di ping in bash?

7

Sto utilizzando il seguente script per scorrere un elenco di indirizzi IP e riportare la% della perdita di pacchetti.

Mi piacerebbe anche che fosse stampato prima l'indirizzo IP, quindi la sua% di perdita di pacchetti. Ma non riesco a ottenere la sintassi giusta per farlo funzionare.

Idealmente, sarebbe come:

192.168.99.24  25%
192.168.99.23  0%    
etc...

Ecco il mio 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
    
posta IT Dude 23.08.2012 - 22:28
fonte

1 risposta

7

Usa

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

all'interno del ciclo.

Nel caso in cui si desideri stampare solo gli host con perdita di pacchetti

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

Nota laterale: grep pattern | awk '{action}' di solito può essere sostituito con il molto più ordinato (e leggermente più veloce) awk '/pattern/ {action}'

    
risposta data 23.08.2012 - 22:43
fonte

Leggi altre domande sui tag