Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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 wink


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne