7 votes

Comment puis-je formater la sortie de ping en bash ?

J'utilise le script suivant pour parcourir une liste d'adresses IP et rapporter le % de perte de paquets.

J'aimerais également que l'adresse IP soit imprimée en premier, puis le pourcentage de perte de paquets. Mais je n'arrive pas à trouver la bonne syntaxe pour que cela fonctionne.

Idéalement, ça ressemblerait à ça :

192.168.99.24  25%
192.168.99.23  0%    
etc...

Voici mon 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

nohillside Points 82672

Utilisez

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

à l'intérieur de la boucle.

Dans le cas où vous ne voulez imprimer que les hôtes avec perte de paquets, utilisez

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

Note complémentaire : grep pattern | awk '{action}' peut généralement être remplacé par la méthode beaucoup plus propre (et légèrement plus rapide) awk '/pattern/ {action}'

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X