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 06/10/2010, à 17:47

blattes86

[RESOLU] script vérifiant présence d'une machine

Bonjour a tous.
Ayant eu quelques coupure électrique aujourd'hui, nous nous sommes décidé au travail d'acheter un onduleur assez puissant afin de protéger nos serveur.
Par contre l'onduleur que j'ai en vu n'est capable de manager qu'une seule machine.
Afin de protéger qu'en même les autre serveurs, j'ai cherché a faire un script, qui vérifiait la présence su serveur principal afin de tout couper en cas d'absence. J'ai cherché a faire cela grâce a un ping mis cela ne fonctionne pas
Voici le script de test

if [ `ping -c10 192.168.1.1` == /100%/ ]
then
                 echo "hs";
else

                echo "ok";
fi

A chaque fois que lance le script j'obtiens cette réponse :

bash: [: trop d'arguments
ok

Ayant passé toute ma journée a m'arracher les cheveux dessus, je viens donc solliciter votre aide.

En espérant que vous aurez des idées, Bonne soiré a tous

Dernière modification par blattes86 (Le 06/10/2010, à 18:09)

Hors ligne

#2 Le 06/10/2010, à 17:59

tirom14

Re : [RESOLU] script vérifiant présence d'une machine

Hello !!!
Alors je sais pas trop si je peut t'aider mais ton sujet m'interesse :
Pourquoi "`ping -c10 192.168.1.1` == /100%/" ?
'fin j'veut dire que l'expression ping va pas retourner "100%" ?


Sinon peut être en utilisant nmap,
genre :

nmap -sP 192.168.1.1

Ca te renvoit si la machine est euh... up.
Le resultat renvoyé est un peu brut, mais en travaillant la chose....

genre :

nmap -sP 192.168.1.1 | grep "1 host up"

Sa te renverra une ligne si il est allumé ou sinon rien
[edit] en testant la valeur de retour, genre

if test $? -eq 0

condition vrai pour machine active

Dernière modification par tirom14 (Le 06/10/2010, à 18:02)

Hors ligne

#3 Le 06/10/2010, à 18:08

blattes86

Re : [RESOLU] script vérifiant présence d'une machine

Problème réglé :
En fouillant bocoup plus sur le forum j'ai enfin trouvé ma solution grâce a ce sujet http://forum.ubuntu-fr.org/viewtopic.php?id=420375

voila donc le script final et fonctionnell

result=`ping -c1 192.168.1.2 | grep "1 received"`

if [[ $result = "" ]]
then
                echo "dodo";
                sudo halt;
else

                echo "ok";
fi

P.S. :merci tout de même de ton aide tirom14

Dernière modification par blattes86 (Le 06/10/2010, à 18:09)

Hors ligne

#4 Le 06/10/2010, à 18:11

sputnick

Re : [RESOLU] script vérifiant présence d'une machine

Pop po pop !? smile
Pourquoi tant de haine ? tongue

if ping &>/dev/null -c1 10.0.0.1; then
    echo "10.0.0.1 is up, w00t !"
else
    echo >&2 "Houston, ya de la m.... dans le bastringue ! Le vol 10.0.0.1 ne réponds plus ! MAYDAY !"
fi

Si tu comprends pas, dit moi quoi (mais cherche un peu)


On ne peut pas mettre d'array dans un string!
https://sputnick.fr/

Hors ligne

#5 Le 07/10/2010, à 09:11

nesthib

Re : [RESOLU] script vérifiant présence d'une machine

sputnick a écrit :

Pourquoi tant de haine ? tongue

if ping &>/dev/null -c1 10.0.0.1

Pourquoi tant de haine ? tongue

if ping -q -c1 10.0.0.1

indice : if prend en compte le code de retour des commandes, echo $? pour afficher le code de retour de la commande précédente


GUL Bordeaux : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne

#6 Le 07/10/2010, à 11:24

sputnick

Re : [RESOLU] script vérifiant présence d'une machine

Oui, mais on peut encore raccourcir en utilisant la "vérité" des commandes.
Toutes commandes (les 4443 chez moi :

find ${PATH//:/ } -type f | wc -l

) ont un code de retour qui vaut vrai ou faux. Le vrai est toujours 0 et le faux (en bash) de 1 à 255. C'est la logique booléenne.
Mais ça c'est la théorie, la pratique :

ping -q -c1 10.0.0.1 && echo "10.0.0.1 is up, w00t !" || echo >&2 "Houston, ya de la m.... dans le bastringue"

autre exemple :

grep -q "^blattes86:" /etc/passwd && echo "blattes86 est dans /etc/passwd"

&& est un ET logique
|| est un OU logique

Dernière modification par sputnick (Le 07/10/2010, à 13:47)


On ne peut pas mettre d'array dans un string!
https://sputnick.fr/

Hors ligne

#7 Le 07/10/2010, à 20:29

Totor

Re : [RESOLU] script vérifiant présence d'une machine

au risque de me répéter :
commande1 && commande2 || commande3 n'équivaut pas à un if commande1; then commande2; else commande3; fi

Dans la majeure partie des cas, c'est vrai mais il en existe où c'est faux.

Un contre exemple :

[ 1 -eq 1 ] && [ 1 -eq 2 ] || echo "dommage !"

Donc dans les faits, c'est le cas uniquement si commande2 retourne vrai


-- Lucid Lynx --

Hors ligne

#8 Le 07/10/2010, à 20:40

sputnick

Re : [RESOLU] script vérifiant présence d'une machine

Je plussoie, j'utilise cette forme uniquement quand je suis sur du retour de la commande1, comme avec les echo comme ici.


On ne peut pas mettre d'array dans un string!
https://sputnick.fr/

Hors ligne

#9 Le 07/10/2010, à 20:51

ehmicky

Re : [RESOLU] script vérifiant présence d'une machine

Pour moi :

commande1 && commande2 || commande3

équivaut à :

( commande1 && commande2 ) || commande3

soit :

if commande1; then
   if ! commande2; then
      commande3
   fi
else
   commande3
fi

Donc a && b || c n'équivaut pas à "if/then/else" lorsque a est vrai et b est faux.

Dernière modification par ehmicky (Le 07/10/2010, à 20:54)


Stego++, bibliothèque libre de stéganographie (avec cryptographie), à venir !
Besoin de votre aide :
Stats sur les compilateurs C++ les plus utilisés
Comment utiliser les archetypes C++ ?

Hors ligne