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.

#26 Le 08/04/2011, à 08:52

remi82

Re : [Résolu] Script pour éteindre un serveur si le principal est éteint

Bonjour,

Un ls -l de shutdown-ip.sh donne :

-rwxrwxrwx 1 root root 168 2011-04-07 10:34 shutdown-ip.sh

J'ai refait un chmod +x shutdown-ip.sh

Dans "/var/log/syslog", j'ai bien les lignes :


Apr  8 08:50:01 serveur CRON[14569]: (root) CMD (sh /home/user/shutdown-ip.sh)

Mais le script n'éteint pas le serveur.

Merci d'avance

Hors ligne

#27 Le 08/04/2011, à 12:35

KujakuChan

Re : [Résolu] Script pour éteindre un serveur si le principal est éteint

J'ai modifié un peu le script et il marche chez moi.
Le script marche en l'état où il a été fait. J'ai juste ajouté un else dans le cas où le PC serait toujours allumé pour m'assurer de l'affichage et changé la commande pour éteindre en message parce que je ne souhaite pas éteindre ma machine non plus. wink

J'ai aussi remarqué l'absence de déclaration (type de script) à la première ligne et j'ai testé mais apparemment ça n'a aucun lien surtout quand on lance le script explicitement avec sh.

Je vais modifier encore le script de telle sorte qu'il complète un fichier (append) avec un tag horaire pour voir si il exécute bien les commandes. En principe ça ne devrait pas coincer et j'admets avoir du mal à comprendre d'où peut venir ton problème.
En tout cas je teste ça et je te donne le résultat plus tard.

#!/bin/sh
HOST="192.168.1.13"
 
# no ping request
COUNT=1
 
count=$(ping -c $COUNT $HOST | grep 'received' | awk -F',' '{ print $2 }' | awk '{ print $1 }')
if [ $count -eq 0 ]; then
    # 100% failed
    echo `date +'%F %k:%M:%S'` shutdown machine >> test.txt
else
    echo `date +'%F %k:%M:%S'` $count ping received over $COUNT tries. >> test.txt
fi

Bon ben en fait le temps d'écrire mon message j'ai déjà confirmation que tout marche comme prévu.
/var/log/cron.log

Apr  8 12:29:01 Devstation cron[1066]: (user) RELOAD (crontabs/user) 
Apr  8 12:29:01 Devstation CRON[2539]: (user) CMD (sh /home/user/test.sh) 
Apr  8 12:30:01 Devstation CRON[2557]: (user) CMD (sh /home/user/test.sh) 
Apr  8 12:31:01 Devstation CRON[2573]: (user) CMD (sh /home/user/test.sh) 

test.txt

2011-04-08 12:28:55 shutdown machine
2011-04-08 12:29:04 shutdown machine
2011-04-08 12:30:04 shutdown machine
2011-04-08 12:31:04 shutdown machine
2011-04-08 12:32:04 shutdown machine
2011-04-08 12:33:04 shutdown machine
2011-04-08 12:34:04 shutdown machine
2011-04-08 12:35:04 shutdown machine

自分の考え:ウィンドウズライナックスに対するのはデルフィC++に対するようなものである
Just a thought : Windows is to Linux as Delphi is to C++ . Juste une pensée : Windows est à Linux ce que Delphi est à C++.

Hors ligne

#28 Le 08/04/2011, à 12:40

remi82

Re : [Résolu] Script pour éteindre un serveur si le principal est éteint

Je vais tester en début d'après midi.
Par contre, je n'ai pas de fichier "/var/log/cron.log"

Hors ligne

#29 Le 08/04/2011, à 13:16

KujakuChan

Re : [Résolu] Script pour éteindre un serveur si le principal est éteint

Moi non plus je ne l'avais pas il y a pas plus loin qu'hier (ou avant-hier je ne sais plus trop)
Il faut installer le paquet sysklogd je crois et éditer le fichier /etc/syslog.conf pour dé-commenter la ligne qui va bien dedans.


自分の考え:ウィンドウズライナックスに対するのはデルフィC++に対するようなものである
Just a thought : Windows is to Linux as Delphi is to C++ . Juste une pensée : Windows est à Linux ce que Delphi est à C++.

Hors ligne

#30 Le 08/04/2011, à 14:17

remi82

Re : [Résolu] Script pour éteindre un serveur si le principal est éteint

J'ai bien installé le paquet sysklogd.

J'ai décommenté la ligne "cron.* ; mais je n'ai toujours pas le fichier "/var/log/cron.log"

Modification :

J'ai redémarré le serveur. J'ai bien le fichier cron.log

Je re-test et vous tiens au courant.

Dernière modification par remi82 (Le 08/04/2011, à 14:23)

Hors ligne

#31 Le 08/04/2011, à 14:31

remi82

Re : [Résolu] Script pour éteindre un serveur si le principal est éteint

Dans les logs cron.log, je vois bien le scripts qui tourne.
Toutes les deux minutes tel que je l'ai planifié.

Mais le serveur ne s'éteint toujours pas.

Je n'y comprend rien. Car lorsque je le lance manuellement le script, ça fonctionne.

Hors ligne

#32 Le 08/04/2011, à 17:51

KujakuChan

Re : [Résolu] Script pour éteindre un serveur si le principal est éteint

Qu'est-ce qu'il te sort le journal de cron ?
Est-ce que tu as pensé à faire une sortie vers un fichier comme dans ma version modifiée avec un timestamp ?
Comme ça, ça prouverait bien que le script est exécuté comme il faut via cron (ou pas).
Normalement pas de doute mais au moins ça permet de les écarter.
Sinon je ne connais pas d'autre moyen d'analyser plus en profondeur ce qui se passerait à ton niveau.
Essayes de donner les droits de root sur la commande.

Je veux dire au lieu de lancer un sh <script> lancer un  sudo sh <script>.
Il faudra juste régler le problème de la saisie du mot de passe. smile
A une époque j'avais feinté dans ce genre de situation en écrivant le mot de passe dans un fichier dans lequel je restreint les droits, etc... mais je ne sais pas si ça peut marcher ici et en plus c'est une solution pas très classe. Disons que c'est une solution provisoire.
Je crois en tout cas que le problème c'est qu'il te faut les droits de root pour éteindre ou redémarrer le PC.
Alternative :
Te donner les droits sur la commande shutdown sans avoir à utiliser ni sudo, ni mot de passe.
Je vais vérifier mais je crois qu'il faut ces droits.

EDIT: Il me semblait bien. J'ai eu un message qui me demandais les droits de root donc je ne suis pas fou. wink

Dernière modification par KujakuChan (Le 08/04/2011, à 17:59)


自分の考え:ウィンドウズライナックスに対するのはデルフィC++に対するようなものである
Just a thought : Windows is to Linux as Delphi is to C++ . Juste une pensée : Windows est à Linux ce que Delphi est à C++.

Hors ligne

#33 Le 08/04/2011, à 18:01

remi82

Re : [Résolu] Script pour éteindre un serveur si le principal est éteint

Merci beaucoup pour ton aide. Je teste ça dès que possible et je te tiens au courant.
Car là, je suis sur une urgence.

Merci

Hors ligne

#34 Le 11/04/2011, à 09:41

remi82

Re : [Résolu] Script pour éteindre un serveur si le principal est éteint

Bonjour,

Je viens de faire de nouveaux tests.
Si j'écris dans un fichier lorsqu'il ne ping plus, ça fonctionne parfaitement.

Quand je remplace par "shutdown -h 0", le pc ne s'éteint pas.
Il s'agit donc bien d'un problème de droit. En mettant sudo devant la commande, ça ne fonctionne pas plus.

Je vais donc chercher comment faire pour résoudre ce problème.

Encore merci de votre aide

Hors ligne

#35 Le 11/04/2011, à 11:48

remi82

Re : [Résolu] Script pour éteindre un serveur si le principal est éteint

Je viens de refaire un test sur un ubuntu avec une interface.

Le script ne fonctionne pas plus.
A la place de "shutdown -h 0", j'ai mis "halt". Et là, le pc s'éteint.

J'ai donc mis "halt" sur mon serveur, mais ça ne fonctionne pas.
C'est vraiment étrange.

Hors ligne

#36 Le 11/04/2011, à 12:18

remi82

Re : [Résolu] Script pour éteindre un serveur si le principal est éteint

J'ai enfin trouvé.

A la place de mettre "shutdown -h 0" ou "halt", j'ai mis "/sbin/shutdown -h 0"

Et là, ça fonctionne.

Merci à vous.

Hors ligne