Shell .. onduleur..

Forum dédié à la distribution du même nom et que vous pourrez télécharger sur http://www.contribs.org. La nouvelle version de cette distribution se nomme SME Server

Modérateur: modos Ixus

Shell .. onduleur..

Messagepar jcp » 13 Mai 2007 23:38

Bonjour,

j'ai un petit souci. J'ai récupéré un petit shell tout simple dans le newsgroup sme, et j'essaye de l'ameliorer. manque de chance j'ai toujours une erreur et je n'arrive pas a trouver d'ou vient le probleme...
si vous avez une idée.
le but etant de tester un equipement de mon reseau non ondule. En cas de perte de celui ci je fait un shutdown de mon sme qui lui est sur onduleur.

echo " " > test-courant.txt
date >> test-courant.txt
echo " " >> test-courant.txt
if ! ping -c1 -w1 192.168.0.220 >> test-courant.txt ;
then sleep 300
if ! ping -c1 -w1 192.168.0.220 ;
then echo "Probleme courant" >> test-courant.txt
mail -s alarme Courant user@imode.fr < test-courant.txt
shutdown -h now
exit 1
fi
fi
exit 0

Voici l'erreur :
test-courant.sh: line 20: syntax error: unexpected end of file


Cordialement,

Jean-Christophe
Avatar de l’utilisateur
jcp
Lieutenant de vaisseau
Lieutenant de vaisseau
 
Messages: 218
Inscrit le: 19 Fév 2003 01:00

Messagepar Pabze » 14 Mai 2007 10:16

Bonjour JC,

Juste deux petites choses (Sorry d'avance si elles sont inutiles !)

J'ai copié ce script sur une de mes SME, et juste remplacé les IP pour correspondre avec mon réseau (D'abord une existante, puis une non) et le "shutdown" par un echo pour test !

1°) Le sleep 300, c'est un peu long... à mon goût ! :)
2°) Mets des cotes sur la ligne :
mail -s 'alarme Courant' user@imode.fr < test-courant.txt

Sinon, tu envois un mail ayant pour sujet alarme à Courant@tondomaine.xx et à user@imode.fr

Moi cela fonctionne très bien !

Et surtout :
As tu bien commencé ce script par un #!/bin/bash

Pabze :wink:
Avatar de l’utilisateur
Pabze
Amiral
Amiral
 
Messages: 1263
Inscrit le: 25 Août 2003 00:00
Localisation: Lille

Messagepar jcp » 14 Mai 2007 10:40

Salut,

Merci pour tes commentaires...

je vais mettre les ' ' et concernant la commande bash, oui elle est bien la.
Par contre j'ai un fichier .txt qui est crée mais avec un blanc derriere le test-courant.txt
ce qui me pose un soucis...

Comment cela se fait que j'ai une erreur en fin de ce fichier ?

Pour les 300 Sec, j'ai mis ce temps, car mon onduleur tiens 20Mns, et si je reboot mon routeur wifi, que je test, je ne voudrais pas declancher un shutdown de mon SME :-)

Si quelqu'un a d'autres idées pour améliorer ce petit script...

Ps: Pour le mail vers 'user@imode.fr' ca me permet d'etre averti sur mon GSM en moins de 10sec :-) quelque soit le lieu ou je me trouve... assez genial..

Cordialement,


Jean-Christophe
Avatar de l’utilisateur
jcp
Lieutenant de vaisseau
Lieutenant de vaisseau
 
Messages: 218
Inscrit le: 19 Fév 2003 01:00

Messagepar Pabze » 14 Mai 2007 16:50

Re,

Je te re-confirme que pour moi cela fonctionne bien...
Le plus étonnant sur ton erreur, c'est que ton script ne fait que 15 lignes max ...
Alors l'erreur à la ligne 20 ...

Pabze :wink:
L'or c'est bien, les platines c'est mieux.
Avatar de l’utilisateur
Pabze
Amiral
Amiral
 
Messages: 1263
Inscrit le: 25 Août 2003 00:00
Localisation: Lille

Messagepar jcp » 14 Mai 2007 17:20

En fait il fait bien 20 lignes, c'est supprimé le debut avec #bach...

Tu fais comment pour le lancer en interactif ?

./test-courant.sh ?

Tu as bien le fichier test-courant.txt en sortie dans le meme répertoire que le .sh ?

Cordialement,

Jean-Christophe
Dernière édition par jcp le 14 Mai 2007 17:31, édité 1 fois au total.
Avatar de l’utilisateur
jcp
Lieutenant de vaisseau
Lieutenant de vaisseau
 
Messages: 218
Inscrit le: 19 Fév 2003 01:00

Messagepar Pabze » 14 Mai 2007 17:27

Re,

Pas bach mais bash
Faute de frappe ?

J'ai mon script sous /root/ avec droit 700 et je le lance par la commande sh ALARM.sh (nom du script)

Pabze :wink:

Post en entier ton script en prenant soin de l'encardrer avec :
Code: Tout sélectionner
SCRIPT
Avatar de l’utilisateur
Pabze
Amiral
Amiral
 
Messages: 1263
Inscrit le: 25 Août 2003 00:00
Localisation: Lille

Messagepar jcp » 14 Mai 2007 18:40

voici le script en entier..

Code: Tout sélectionner
#-----DEBUT SCRIPT----------------------------
#! /bin/sh
# Routine de surveillance onduleur ,Le script surveille la borne WIFI
# branche sur le secteur non protege est actif par ping
# Shudown de la machine apres x mn de coupure du secteur

echo "." > test-courant.txt
date >> test-courant.txt
echo " " >> test-courant.txt
ping -c1 -w1 192.168.0.200 >> test-courant.txt
if ! ping -c1 -w1 192.168.0.200 ;
   then sleep 300
        if ! ping -c1 -w1 192.168.0.200 ;
       then echo "Probleme courant" >> test-courant.txt
       mail -s alarme Courant xxxxx@imode.fr < test-courant.txt
            xshutdown -h now
            exit 1
        fi
fi
exit 0


En fait quelque soit l'ip que je met, je n'ai jamais d'erreur ni mail !!!

Cordialement,

Jean-Christophe
Avatar de l’utilisateur
jcp
Lieutenant de vaisseau
Lieutenant de vaisseau
 
Messages: 218
Inscrit le: 19 Fév 2003 01:00

Messagepar Pabze » 14 Mai 2007 21:20

Re :

Code: Tout sélectionner
#-----DEBUT SCRIPT----------------------------
#!/bin/sh
# Routine de surveillance onduleur, le script surveille la borne WIFI
# branché sur le secteur non protégé est actif par ping
# Shutdown de la machine après x mn de coupure du secteur

echo "" > test-courant.txt
date >> test-courant.txt
echo "" >> test-courant.txt
if ! ping -c1 -w1 192.168.0.200 >> test-courant.txt ;
then sleep 300
       if ! ping -c1 -w1 192.168.0.200 ;
       then echo "Problème courant" >> test-courant.txt
       mail -s 'Alarme Courant' xxxxx@imode.fr < test-courant.txt
            shutdown -h now
            exit 1
       fi
fi
exit 0


Pourquoi avoir rajouté ça : "ping -c1 -w1 192.168.0.200 >> test-courant.txt" ?
Pas gênant mais au final en double dans le txt
Par contre "if ! ping -c1 -w1 192.168.0.200 ;" seul lui oui, il bloque la suite du script car il attend d'autres arguments !

Ensuite : "mail -s alarme Courant xxxxx@imode.fr < test-courant.txt" envoi un mail à "Courant" avec pour sujet "alarme" !
Donc normal que tu ne reçoives rien ! :)

Enfin shutdown et non xshutdown

Pour le reste, il fonctionne et pas d'erreur de syntaxe chez moi,
Pabze :wink:

Donc tant que l'IP est valide, le script ne fait rien, normal, en revanche dés que tu colles une IP non existante sur ton réseau, le shutdown ce lance !
Pour tester vire ton sleep 300 ! Car la condition mail plus reboot ne se fera qu'aprés les 300 secondes :)
Avatar de l’utilisateur
Pabze
Amiral
Amiral
 
Messages: 1263
Inscrit le: 25 Août 2003 00:00
Localisation: Lille

Messagepar jcp » 14 Mai 2007 21:48

Pabze a écrit:Re :


Pourquoi avoir rajouté ça : "ping -c1 -w1 192.168.0.200 >> test-courant.txt" ?
:)


C'etait pour tester !

Pas gênant mais au final en double dans le txt
Par contre "if ! ping -c1 -w1 192.168.0.200 ;" seul lui oui, il bloque la suite du script car il attend d'autres arguments !


Qu'est ce que je dois mettre a la place ou comme argument ?

Ensuite : "mail -s alarme Courant xxxxx@imode.fr < test-courant.txt" envoi un mail à "Courant" avec pour sujet "alarme" !
Donc normal que tu ne reçoives rien ! :)


Non car je mets une ip bidon de mon reseau !!

Enfin shutdown et non xshutdown


En fait j'ai mis xshutdown pour ne pas faire le shutdown.


Voila ce que j'ai lorsque je le lance avec une ip bidon !
Code: Tout sélectionner
[root@www files]# sh test-courant.sh
: command not found
test-courant.sh: line 20: syntax error: unexpected end of file
[root@www files]#


et aucun mail ni meme d'attente des 300 sec !!! il bug donc avant !

Cordialement,

Jean-Christophe
Avatar de l’utilisateur
jcp
Lieutenant de vaisseau
Lieutenant de vaisseau
 
Messages: 218
Inscrit le: 19 Fév 2003 01:00

Messagepar Pabze » 15 Mai 2007 08:58

Re,

Prends le script de mon post STP !
Dans ton /root/ lance un vi ALARM.sh et colles le dedans, quittes vi et lance un chmod 700 ALARM.sh
Puis lance sh ALARM.sh
Il n'y a aucune raison qu'il ne fonctionne pas, il y a 4 lignes d'execution !

Remplace shutdown -h now par echo "Bouh"
si tu ne veux pas de reboot.

Lances tu bien le script à l'endroit ou il se trouve ?
Les droits sont bien à 700 ? (Enfin qu'il y est au moins un droit d'exec à quelqu'un)
Mais bon, même avec des droits à 000 un sh depuis root te l'executera quand même.
Ton script ce nomme bien test-courant.sh ?

Car là il n'y a aucune raison qu'il te sorte un "command not found" !

Pabze :wink:
Avatar de l’utilisateur
Pabze
Amiral
Amiral
 
Messages: 1263
Inscrit le: 25 Août 2003 00:00
Localisation: Lille

Messagepar jibe » 15 Mai 2007 09:21

Salut,

Si je peux me permettre...

Le "command not found" ne semble pas venir du fait du script non trouvé (ou non executé), puisque la "syntax error" apparait ensuite. Je pense plutôt au xshutdown :wink:

=> jcb : écoute les conseils de Pabze plutôt que tenter des initiatives maladroites :wink: Pabze a suffisament d'expérience pour que tu puisses lui faire entière confiance. Entre autres, ne mets jamais une commande inexistante (xshutdown...) dans un script : mets la bonne en remarque, ou précéde la par "echo", ce qui provoquera l'affichage du mot au lieu de la commande elle-même :wink: Une trace pratique, et pas de messages d'erreur...

As-tu corrigé ta ligne d'envoi de mail ? Elle ne peut pas fonctionner, contrairement à ce que tu crois : le premier argument est le sujet du mail, le second le destinataire. Or, ton premier argument est "alarme" tout court, et ton second (l'espace fait la séparation des arguments...) "Courant". Donc, comme te l'a dit Pabze, tu envoies un mail à l'utilisateur "Courant", et s'il n'existe pas, il est certain que tu ne vois jamais aucun mail arriver (ou si tu le cherches chez un autre destinataire !).

Un petit peu de courage, tu vas y arriver. Mais teste d'abord ce qui t'est conseillé, et remplace une par une les choses que tu estimes devoir faire autrement. En procédant bien par étapes à partir d'un script fonctionnel, tu progresseras et sauras vite retrouver ce qui ne va pas...

Au fait, à quoi correspond exactement la ligne 20 ?

Au fait, il sert à quoi, ce script ? C'est pour les onduleurs qui ne savent pas commander l'arrêt du PC directement ? Il me parait astucieux, mais j'ai dû rater quelque chose parce que je n'en vois pas la réelle utilité pratique ?
"Le monde ne sera pas détruit par ceux qui font le mal, mais par ceux qui les regardent sans rien faire" (Albert Einstein)

Autrefois, l'Etat défendait des valeurs. Maintenant, il défend des profits... (Anne Haunnime)
Avatar de l’utilisateur
jibe
Amiral
Amiral
 
Messages: 4366
Inscrit le: 17 Oct 2003 00:00
Localisation: Haute Savoie

Messagepar jcp » 15 Mai 2007 09:37

Bonjour,

Merci pour vos conseils. En fait pour plus d'information, j'ai bien copié le script de Pabze avec un chmod 777 pour plus de sécurité. Mais rien n'y fait.
J'ai meme supprimé toutes les lignes et simplifié au maximun et j'ai l'impression que c'est cette ligne qui ne fonctionne pas !

Code: Tout sélectionner
if ! ping -c1 -w1 192.168.0.200


Quelque soit l'ip que je met le test ne me retourne jamais "false."
par contre si je lance cette commande sous le shell ca marche..


Code: Tout sélectionner
[root@www root]# if ! ping -c1 -w1 192.168.0.99 ; then echo "pb" ; fi
PING 192.168.0.99 (192.168.0.99) from 192.168.0.250 : 56(84) bytes of data.

--- 192.168.0.99 ping statistics ---
1 packets transmitted, 0 received, 100% loss, time 0ms

pb

[root@www root]#


C'est pour cela que je ne comprend pas pourquoi cela ne s'execute pas

la je suis dans le répertoire files de la primary bay
Code: Tout sélectionner
[root@www files]#
[root@www files]#
[root@www files]# cat test-courant.sh
#!/bin/bash
if ! ping -c1 -w1 192.168.0.99 ;
then echo "pb"
fi
[root@www files]# sh test-courant.sh
test-courant.sh: line 5: syntax error: unexpected end of file
[root@www files]#


C'est le noir total !! :-(

Jean-Christophe
Avatar de l’utilisateur
jcp
Lieutenant de vaisseau
Lieutenant de vaisseau
 
Messages: 218
Inscrit le: 19 Fév 2003 01:00

Messagepar jibe » 15 Mai 2007 10:06

Salut,

:shock:

Je viens de faire le test (dans le /home de mon poste de travail, mais ça ne devrait rien changer... Au besoin, essaie !). J'ai créé le petit script de test du ping par copier-coller de celui que tu as posté, lui ai mis les droits 777 et l'ai lancé. J'obtiens bien l'effet attendu !

Avec quel éditeur fais-tu ton script ? Le "unexpected end of file" en ligne 5 laisse supposer une mauvaise fin du fichier... Y a-t-il bien un retour en dernière ligne ? Essaie de rajouter une ligne avec n'importe quoi (echo azer) pour voir ce qui se passe et où se situera alors l'erreur...

Au besoin, vérifie le contenu de ton fichier en hexadécimal :
Code: Tout sélectionner
joseph@joseph-mint:~$ hexdump test.sh
0000000 2123 622f 6e69 622f 7361 0a68 6669 2120
0000010 7020 6e69 2067 632d 2031 772d 2031 3931
0000020 2e32 3631 2e38 2e30 3939 3b20 740a 6568
0000030 206e 6365 6f68 2220 6270 0a22 6966 0a0a
0000040
joseph@joseph-mint:~$
"Le monde ne sera pas détruit par ceux qui font le mal, mais par ceux qui les regardent sans rien faire" (Albert Einstein)

Autrefois, l'Etat défendait des valeurs. Maintenant, il défend des profits... (Anne Haunnime)
Avatar de l’utilisateur
jibe
Amiral
Amiral
 
Messages: 4366
Inscrit le: 17 Oct 2003 00:00
Localisation: Haute Savoie

Messagepar jcp » 15 Mai 2007 10:48

voila le dump hexa...

j'utilise MC avec son editeur... je ne connais pas vi !!

Code: Tout sélectionner
[root@www files]# hexdump test-courant.sh
0000000 2123 622f 6e69 732f 0d68 690a 2066 2021
0000010 6970 676e 2d20 3163 2d20 3177 3120 3239
0000020 312e 3836 302e 392e 2039 203b 0a0d 6874
0000030 6e65 6520 6863 206f 7022 2262 0a0d 6966
0000040 0a0d
0000042


cordialement,

Jean-Christophe
Avatar de l’utilisateur
jcp
Lieutenant de vaisseau
Lieutenant de vaisseau
 
Messages: 218
Inscrit le: 19 Fév 2003 01:00

Messagepar Pabze » 15 Mai 2007 16:34

Re,

Merci Jibe de ton aide pour JCP ! :)

Le truc qui me rends dingue ce sont tes :
test-courant.sh: line 5: syntax error: unexpected end of file

As tu un retour chariot à la fin de ton script ?
C'est à dire, pour la fin de ton script tu tapes "entrer" (La touche ! Ne l'ecris pas stp ) sur ligne 4 aprés "fi"

Ton script fait 4 lignes !

1° #!/bin/bash
2° if ! ping -c1 -w1 192.168.0.99 ;
3° then echo "pb"
4° fi

?!?!
J'ai aussi copier/coller ton script dans mon files de Primary (on ne sait jamais, recréons les mêmes situation) Et aucun souci ...

Code: Tout sélectionner
[root@nosferatu files]# cat test-courant.sh
#!/bin/bash
if ! ping -c1 -w1 192.168.0.99 ;
then echo "pb"
fi

[root@nosferatu files]# sh test-courant.sh
PING 192.168.0.99 (192.168.0.99) 56(84) bytes of data.

--- 192.168.0.99 ping statistics ---
2 packets transmitted, 0 received, 100% packet loss, time 1000ms

pb
[root@nosferatu files]#

et
Code: Tout sélectionner
[root@nosferatu files]# hexdump test-courant.sh
0000000 2123 622f 6e69 622f 7361 0a68 6669 2120
0000010 7020 6e69 2067 632d 2031 772d 2031 3931
0000020 2e32 3631 2e38 2e30 3939 3b20 740a 6568
0000030 206e 6365 6f68 2220 6270 0a22 6966 0a0a
0000040
[root@nosferatu files]#


Jibe, je contact Scully et Mulder ?
Pabze :wink:
Avatar de l’utilisateur
Pabze
Amiral
Amiral
 
Messages: 1263
Inscrit le: 25 Août 2003 00:00
Localisation: Lille

Suivant

Retour vers E-Smith / SME Server

Qui est en ligne ?

Utilisateur(s) parcourant actuellement ce forum : Google [Bot] et 1 invité

cron