#1 Le 19/01/2015, à 15:44
- BenjiBoy
[resolu] Résultat de commande dans une variable
Bonjour à tous,
bien que le sujet ai été abordé plusieurs fois, les solutions proposées ne marchent pas chez moi.
Contexte :
J'ai du matériel sur site isolé, et il arrive que le matériel soit off-line un moment et on-line dans une fenêtre très courte de temps.
Du coup je souhaite être avisé dès que la réponse à un ping est "positive" pour qu'apparaisse à l'écran une alarme.
Pour procéder je fais :
ping -c 1 url.dyndns.info | grep 'ttl=' | grep 'time' > temp.file
#je ping mon adresse, j'en retire la ligne de l'information désirée et la mets dans un fichier
Dans temp.file il y a :
64 bytes from 176.178.123.123: icmp_seq=1 ttl=47 time=95.1 ms
Puis je souhaite ne garder que la valeur en ms :
awk '{print substr($7,6,4)}' < temp.file
#ce qui donne :
95.1
Je souhaite mettre ce résultat en variable afin de lui demander via un "if" si il est en dessous d'une certain valeur.
Comment fais-je ?
Dernière modification par BenjiBoy (Le 30/01/2015, à 18:02)
Hors ligne
#2 Le 19/01/2015, à 16:29
- genma
Re : [resolu] Résultat de commande dans une variable
De mémoire
# ` ` ca lance le contenu de la commande avant d'affecter la valeur à la variable variablePourTest
variablePourTest = `awk '{print substr($7,6,4)}' < temp.file`
# On test variablePourTest
if [$variablePourTest >= 10 ]
then
echo "C'est supérieur à 10"
fi
Ca devrait te donner une piste.
"Lorsque tu as découvert le libre, tu sais que tu ne pourras plus jamais revenir en arrière".
Utilisateur d'Ubuntu depuis la version 4.10 !
Mon blog ? https://blog.genma.fr
Mon twitter? http://twitter.com/genma
Hors ligne
#3 Le 19/01/2015, à 19:00
- Hizoka
Re : [resolu] Résultat de commande dans une variable
while true
do
var=$(ping -c 1 url.dyndns.info | grep 'ttl=' | grep 'time' | awk '{print substr($7,6,4)}')
if "${var}" == "95" ]]
then
...
fi
done
en sachant que la ligne est crade et qu'il faudrait la simplifier.
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne
#4 Le 20/01/2015, à 12:40
- BenjiBoy
Re : [resolu] Résultat de commande dans une variable
Salut genma,salut Hizoka.
et bien je vous remercie, effectivement j'ai lu sur pas mal de site que les ` étaient obsolètes, et qu'il ne fallait plus les utiliser ... Mais finalement, c'est encore bien utile.
Voilà donc un peu à quoi ressemble mon code:
Si réponse ping existe, quelle latence ?
Si latence <Xms liaison bonne => avertir l'utilisateur
Si latence >Xms, liaison mauvaise, ne pas avertir l'utilisateur.
Si pas de réponse ping, ne pas avertir l'utilisateur.
Du coup je met un ping -w pour déterminer quand la ping ne répondra pas (genre 50 secondes)
Et j'ai mis tout ça dans le crontab à effectuer toute les minutes.
Mais bon avec la tempête qu'il fait actuellement de toute façon m'est avis que mon matos ne sera jamais en ligne avant plusieurs jours ...
Merci pour vos aides respectives !
Bonne journée.
Hors ligne
#5 Le 20/01/2015, à 18:08
- Hizoka
Re : [resolu] Résultat de commande dans une variable
en effet les `sont obsoletes et a remplacer par $().
attention, mon code boucle à l'infini, il ne faut pas le lancer plusieurs fois.
Mais si tu as trouvé ce qu'il te fallait, ajoute un [resolu] dans le titre de ton topic
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne