#1 Le 03/08/2010, à 17:01
- Zuran
[Résolu] Script bash : résultat de PING
Bonjour amis Linuxien, je suis en train d'écrire mon premier script bash et je doit dire que je me régale mais déjà je bloque sur quelque chose qui me paraissait pourtant simple (et ça doit surement l'être...)
Ce que je souhaite c'est que la fonction PING me renvoi une valeur vrai ou faux au lieu de tout le résultat habituel.
J'ai pour l'instant la ligne suivante :
ping >> resultat -c 1 192.168.1.1
et forcement ça m'écrit dans mon fichier resultat :
PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.
64 bytes from 192.168.1.1: icmp_seq=1 ttl=64 time=2.61 ms
--- 192.168.1.1 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 2.616/2.616/2.616/0.000 ms
alors que je voudrai juste avoir écrit 1 si ça à réussi ou 0 si ça a raté.
Merci de votre aide
Dernière modification par Zuran (Le 03/08/2010, à 18:33)
Hors ligne
#2 Le 03/08/2010, à 17:50
- energikzen
Re : [Résolu] Script bash : résultat de PING
Bonjour,
Essaye plutôt
if ping -c 1 192.168.1.1
echo 1 >> resultat
else
echo 0 >> resultat
fi
Je pense que cela devrait fonctionner ^^
Ps: n'hésite pas si tu as d'autre souci
Dernière modification par energikzen (Le 03/08/2010, à 17:55)
Scripts OK : DNS DHCP DDNS LDAP
Script a finalisé: Serveur secondaire (DNS/DHCP)
Configuration virtualisé : 2 serveurs Debian/Lenny, 1 client Debian et un client XP :D ;)
Hors ligne
#3 Le 03/08/2010, à 18:07
- Hizoka
Re : [Résolu] Script bash : résultat de PING
ping -c 1 192.168.1.1
if [[ ${?} == 0 ]]
then
...
else
....
fi
tout simplement.
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne
#4 Le 03/08/2010, à 18:34
- Zuran
Re : [Résolu] Script bash : résultat de PING
Merci à tous les deux
Hors ligne
#5 Le 04/08/2010, à 07:11
- Totor
Re : [Résolu] Script bash : résultat de PING
Bonjour,
Alors, si l'on reprend le besoin :
Si ça réussi, on doit afficher 1, sinon 0.
En gros, c'est quasiment l'inverse du statut de l'exécution de ton ping. En effet, si le ping réussi, alors la commande a un statut à 0. Et si le ping ne réussi pas, le statut de la commande est tout autre valeur que 0 (suivant la cause de l'échec).
On peut donc dire que ce que l'on souhaite afficher est équivalent à 1-statut commande
sauf que si la commande échoue, le statut peut être autre chose que 1 donc on peut préciser en 1-(si statut <> 0 alors 1 sinon 0)
le statut est contenu dans la variable bash "?". La règle "si statut <> 0 alors 1 sinon 0" peut être traitée par simple substitution : ${?//^0/1} (le caractère ^ permet d'indiquer la négation)
La valeur à afficher s'obtient donc comme ceci : ((1-${?//^0/1}))
Pour répondre au besoin, ma réponse est donc :
ping -c 1 192.168.1.1; echo $((1-${?//^0/1})) >> resultat
-- Lucid Lynx --
Hors ligne
#6 Le 04/08/2010, à 15:31
- PTCH-7777
Re : [Résolu] Script bash : résultat de PING
explicitement et directement je voudrais dire : "C'est pas vicié linux ?"
Dernière modification par PTCH-7777 (Le 04/08/2010, à 15:31)