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 03/08/2010, à 18: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 smile

Dernière modification par Zuran (Le 03/08/2010, à 19:33)

Hors ligne

#2 Le 03/08/2010, à 18: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 wink

Dernière modification par energikzen (Le 03/08/2010, à 18: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, à 19: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, à 19:34

Zuran

Re : [Résolu] Script bash : résultat de PING

Merci à tous les deux smile

Hors ligne

#5 Le 04/08/2010, à 08: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, à 16: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, à 16:31)