Aide pour développer un script sous Debian

Aide pour développer un script sous Debian - réseaux et sécurité - Linux et OS Alternatifs

Marsh Posté le 16-12-2005 à 22:45:39    

Bonjour,
 
Je suis sous Debian et je cherche à faire un script (démon ?) qui régulièrement (disons toutes les 5 minutes) vérifie que la connexion internet fonctionne bien (par exemple, en envoyant un ping sur google). Si la connexion n'est pas active, ce script écrit une ligne dans un fichier (par exemple : "jj/mm/aaaa h:min : internet marche po" ).
 
Voilà, je ne sais absolument pas comment faire ce genre de chose, ni quel langage de programmation il faut utiliser...
 
Je sais bien que google a réponse à tout, surtout pour ce genre de problème, mais le fait est que je ne sais même pas où chercher tellement je suis nul en la matière...
 
Merci !

Reply

Marsh Posté le 16-12-2005 à 22:45:39   

Reply

Marsh Posté le 16-12-2005 à 23:19:00    

Regarde du côté de /etc/init.d/skeleton pour avoir un fichier d'exemple sur la façon dont est créé un daemon.
 
Sinon utilises un script shell (bash par défaut) que tu places dans ta crontab pour planifier son exécution comme souhaité.
 
Pour la rédaction du script en lui-même tu n'as pas besoin de trop chercher : une condition if qui teste si la connexion est inactive auquel cas tu balance ta ligne avec un simple echo "la_date_et_l'heure:echec" > emplacement/nom_du_fichier.
 
Pour les détails, cherche un peu  ;)


---------------
THRAK (def.) : 1) A sudden and precise impact moving from intention, direction and commitment, in service of an aim. 2) 117 guitars almost striking the same chord simultaneously.
Reply

Marsh Posté le 16-12-2005 à 23:21:21    

Je verrais plutot un script lancer via crontab toutes les 5 minutes qu'un daemon...
Si tu veux faire un daemon, il  faut que tu te tapes le script d'init, la gestion des timers...
Alors qu'un simple script avec crontab peut le faire de maniere plus propre.

Reply

Marsh Posté le 16-12-2005 à 23:28:32    

l0ky a écrit :

Je verrais plutot un script lancer via crontab toutes les 5 minutes qu'un daemon...
Si tu veux faire un daemon, il  faut que tu te tapes le script d'init, la gestion des timers...
Alors qu'un simple script avec crontab peut le faire de maniere plus propre.


Bon c'est pas super-compliqué non plus de faire un daemon, mais c'est vrai que dans son cas un script cron tout bête évite déjà de ne pas avoir gérer un timer à l'exécution :jap:


---------------
THRAK (def.) : 1) A sudden and precise impact moving from intention, direction and commitment, in service of an aim. 2) 117 guitars almost striking the same chord simultaneously.
Reply

Marsh Posté le 17-12-2005 à 04:03:37    

+1 pour cron :)

Reply

Marsh Posté le 17-12-2005 à 14:38:14    

Après quelques recherches et en suivant ce que vous m'avez dit, j'ai fait un script qui marche. Mais je ne comprends pas tout, si quelqu'un pouvait m'expliquer quelques points, ce serait sympa !
 

Code :
  1. #!/bin/sh
  2. STATE=0
  3. DATE=`date "+%d/%m/%y %H:%M:%S"`
  4. # à la ligne suivante, je ping google, mais je ne comprends pas ce que
  5. #veut dire " > /dev/null 2>&1"
  6. ping -c 1 216.239.59.147 > /dev/null 2>&1
  7. # Si j'ai bien compris si le ping marche, STATE passe à 1. Mais je ne
  8. #comprends rien du tout à la syntaxe...
  9. [ $? -eq 0 ] && STATE=1
  10. if [ $STATE -eq 0 ]; then
  11.    echo "$DATE connexion active">>log
  12. else
  13.    echo "$DATE connexion perdu">>log
  14. fi


 
Merci pour votre aide !

Message cité 1 fois
Message édité par Moof2 le 17-12-2005 à 14:38:59
Reply

Marsh Posté le 17-12-2005 à 15:15:00    

juste une suggestion, comme ca...
 
connexion perdue...
 
$? est la valeur de retour de ta derniere commande... donc,  
 
[ $? -eq 0 ] && STATE=1
 
si la derniere commande utilisée a renvoyé une erreur, alors STATE vaux 1.
 


Message édité par Profil supprimé le 17-12-2005 à 15:17:25
Reply

Marsh Posté le 17-12-2005 à 15:32:02    

Moof2 a écrit :

Après quelques recherches et en suivant ce que vous m'avez dit, j'ai fait un script qui marche. Mais je ne comprends pas tout, si quelqu'un pouvait m'expliquer quelques points, ce serait sympa !
 

Code :
  1. #!/bin/sh
  2. STATE=0
  3. DATE=`date "+%d/%m/%y %H:%M:%S"`
  4. # à la ligne suivante, je ping google, mais je ne comprends pas ce que
  5. #veut dire " > /dev/null 2>&1"
  6. ping -c 1 216.239.59.147 > /dev/null 2>&1
  7. # Si j'ai bien compris si le ping marche, STATE passe à 1. Mais je ne
  8. #comprends rien du tout à la syntaxe...
  9. [ $? -eq 0 ] && STATE=1
  10. if [ $STATE -eq 0 ]; then
  11.    echo "$DATE connexion active">>log
  12. else
  13.    echo "$DATE connexion perdu">>log
  14. fi


 
Merci pour votre aide !


le "> /dev/null 2>&1" permet de renvoyer tout l'affichage de la commande ping vers /dev/null c'est à dire vers le vide intersidéral. ça évite que ton script remplisse le terminal chaque fois qu'il est lancé.  
 
le "[ $? -eq 0 ] && STATE=1" qui peut s'écrire plus simplement "test $? -eq 0 && STATE=1" ou de façon plus explicite  
 
if [ $? -eq 0 ]
then
   STATE=1
fi
 
teste la valeur de retour de la dernière commande exécutée ($?) et fixe la valeur de STATE en conséquence...

Reply

Marsh Posté le 17-12-2005 à 16:54:11    

Y sert à rien le STATE :D
 

Code :
  1. #!/bin/sh
  2.             DATE=`date "+%d/%m/%y %H:%M:%S"`
  3.            
  4.             # à la ligne suivante, je ping google, mais je ne comprends pas ce que
  5.             #veut dire " > /dev/null 2>&1"
  6.             ping -c 1 216.239.59.147 > /dev/null 2>&1
  7.            
  8.             if [ $? -eq 0 ]; then
  9.               echo "$DATE connexion active">>log
  10.             else
  11.               echo "$DATE connexion perdu">>log
  12.             fi


---------------
Ce n'est point ma façon de penser qui a fait mon malheur, c'est celle des autres.
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed