Et voici ce qui en ressort :
[ping google]
64 bytes from 8.8.8.8: icmp_seq=1 ttl=128 time=6.38 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=128 time=7.09 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=128 time=7.22 ms
64 bytes from 8.8.8.8: icmp_seq=4 ttl=128 time=7.97 ms
64 bytes from 8.8.8.8: icmp_seq=5 ttl=128 time=7.20 ms
[ping orange]
64 bytes from vip1.dyn.hpo.s1.fti.net (193.252.148.241): icmp_seq=1 ttl=128 time=16.9 ms
64 bytes from vip1.dyn.hpo.s1.fti.net (193.252.148.241): icmp_seq=2 ttl=128 time=16.4 ms
64 bytes from vip1.dyn.hpo.s1.fti.net (193.252.148.241): icmp_seq=3 ttl=128 time=16.1 ms
64 bytes from vip1.dyn.hpo.s1.fti.net (193.252.148.241): icmp_seq=4 ttl=128 time=16.9 ms
64 bytes from vip1.dyn.hpo.s1.fti.net (193.252.148.241): icmp_seq=5 ttl=128 time=16.6 ms
J’aimerais simplifier les lignes et au lieu d’avoir
“64 bytes from vip1.dyn.hpo.s1.fti.net (193.252.148.241): icmp_seq=5 ttl=128 time=16.6 ms”
avoir que le temps soit
“time1=16.9ms”, time2=16.4ms" etc…
Hello
Merci pour ta réponse.
et ton script qui est génial.
Je vais l’analyser pour le comprendre, va me falloir des jours je pense lol.
J’aime bien comprendre ce qu’on me propose :).
Petite question :
Peut on éditer les résultats de ce type :
Celui là devrait mieux correspondre au résultat que tu cherches à obtenir :
#!/bin/bash
fichSortie="/doudou/tmp/resultats" # Assigner un nom de fichier à la variable fichSortie
maRegex='.* time(=.*)' # Tout ce qui suit " time" jusqu'à la fin de la ligne
# Création d'une fonction nommée "lancePing"
lancePing() {
compteur=0 # Initialiser le compteur à "0"
printf '%s\n' "[$1]" >> "$3" # Envoyer dans le fichier de sortie une ligne contenant le premier paramètre entre crochets
while read; do
[[ $REPLY =~ $maRegex ]] && \
{
compteur=$(($compteur+1)) # Incrémenter le compteur
printf '%s\n' "time$compteur${BASH_REMATCH[1]/ /}" >> "$fichSortie"
}
done <<< $(ping -c5 $2) # Rediriger la sortie de la commande ping vers l'entrée de la boucle while
}
# Fin de la définition de la fonction "lancePing"
lancePing "Ping Google" 8.8.8.8 "$fichSortie" # Lancer la fonction lancePing avec 3 paramètres
lancePing "Ping Orange" www.orange.fr "$fichSortie" # Lancer la fonction lancePing avec 3 autres paramètres
michel@debg53sw:~$ machaine="bla bla et autre … time=123456 jusqu'à la fin de la ligne"
michel@debg53sw:~$ maRegex='.* time(=.*)'
michel@debg53sw:~$ [[ $machaine =~ $maRegex ]] && echo ${BASH_REMATCH[1]}
=123456 jusqu'à la fin de la ligne
michel@debg53sw:~$ [[ $machaine =~ $maRegex ]] && echo ${BASH_REMATCH[1]/ /}
=123456jusqu'à la fin de la ligne
michel@debg53sw:~$ [[ $machaine =~ $maRegex ]] && echo ${BASH_REMATCH[1]// /}
=123456jusqu'àlafindelaligne
michel@debg53sw:~$ [[ $machaine =~ $maRegex ]] && echo "du texte ajouté juste avant${BASH_REMATCH[1]// /}"
du texte ajouté juste avant=123456jusqu'àlafindelaligne
Si aucun nom de variable n’est fourni à la fonction read (de l’interpréteur de commande bash)
cette fonction créé automatiquement une variable nommée REPLY
à laquelle cette fonction assignera pour valeur chaque ligne lue
qui, dans ce script, provient de la sortie de la commande ping
Effectivement, je viens de constater le problème sous debian 8 (jessie)
J’ai donc reformulé le script de cette façon :
#!/bin/bash
fichSortie="/doudou/tmp/resultats" # Assigner un nom de fichier à la variable fichSortie
maRegex='.* time(=.*)' # Tout ce qui suit " time" jusqu'à la fin de la ligne
# Création d'une fonction nommée "lancePing"
lancePing() {
compteur=0 # Initialiser le compteur à "0"
printf '%s\n' "[$1]" >> "$3" # Envoyer dans le fichier de sortie une ligne contenant le premier paramètre entre crochets
while IFS= read; do
[[ $REPLY =~ $maRegex ]] && \
{
compteur=$(($compteur+1)) # Incrémenter le compteur
printf '%s\n' "time$compteur${BASH_REMATCH[1]/ /}" >> "$fichSortie"
}
done < <(ping -c5 $2) # Rediriger la sortie de la commande ping vers l'entrée de la boucle while
}
# Fin de la définition de la fonction "lancePing"
lancePing "Ping Google" 8.8.8.8 "$fichSortie" # Lancer la fonction lancePing avec 3 paramètres
lancePing "Ping Orange" www.orange.fr "$fichSortie" # Lancer la fonction lancePing avec 3 autres paramètres
Le script ci-dessus fonctionne correctement sous debian 8 (jessie)etdebian 9 (stretch)