Bonjour,
Je suis sous Fedora 6, et après avoir mis en place mon serveur apache, j'ai essayé par le biais de crontab de mettre en place un script permettant de redémarrer le service httpd en cas d'arret de celui ci. Pour cela j'ai édité crontab par la commande : crontab -e puis j'ai inserer :

0.01 * * * * /var/spool/cron/apache.watchdog

pour effectuer une verification chaque minute.

Mon script apache.watchdog :

#!/bin/sh

# this script is a watchdog to see whether the server is online
# It tries to restart the server, and if it's
# down it sends an email alert to admin

# admin's email
EMAIL=mon@mail.com

# the path to your PID file
PIDFILE=/var/run/httpd.pid

# the path to your httpd binary, including options if necessary
HTTPD=/usr/local/sbin/httpd_perl/httpd_perl

# check for pidfile
if [ -f $PIDFILE ] ; then
PID=`cat $PIDFILE`

if kill -0 $PID; then
STATUS="httpd (pid $PID) running"
RUNNING=1
else
STATUS="httpd (pid $PID?) not running"
RUNNING=0
fi
else
STATUS="httpd (no pid file) not running"
RUNNING=0
fi

if [ $RUNNING -eq 0 ]; then
echo "$0 $ARG: httpd not running, trying to start"
if $HTTPD ; then
echo "$0 $ARG: httpd started"
mail $EMAIL -s "$0 $ARG: httpd started" > /dev/null 2>&1
else
echo "$0 $ARG: httpd could not be started"
mail $EMAIL -s \
"$0 $ARG: httpd could not be started" > /dev/null 2>&1
fi
fi

Cependant le service ne redemarre pas et je ne trouve pas le chemin de mon httpd_perl...

Quelqu'un pourrait il m'aider s'il vous plait ?
HTTPD=/usr/local/sbin/httpd_perl/httpd_perl
Je pense que tu dois le faire pointer sur /usr/sbin/httpd

Ceci dit, modifies le script pour utiliser service httpd start, ce sera mieux.
Merci, je fais la modif pour le sbin, par contre je suis newbie sous linux, peux tu m'expiquer ce que je dois changer pour pointer vers httpd start s'il te plait ?
Merci pour ton aide. Après quelques minutes de galère 🙂 le redémarrage automatique marche bien, cependant quand le service est arrêté, je souhaiterais recevoir un mail mais cela ne fonctionne pas :s

Une solution ?
Dans l'état actuel ton script n'est pas prévu pour, tu l'as modifié ?
Arf non :s Je pensais qu'il était fait pour mais après relecture j'ai l'impression qu'il est fait pour envoyer un mail qu'en cas d'impossibilité de redémarrer le service. Est ce juste ? Si oui comment puis-je le modifier afin qu'il envoi un mail en cas d'interruption du service et de retablissement de celui ci par le script ?

( Je sais pas si je suis clair :s )

Merci de votre aide !
Actuellement il envoie un mail dans deux cas de figure :
- Le service tombe mais ne peut pas être redémarré par le script
- Le service tombe et est redémarré par le script
( Je sais pas si je suis clair :s )
Hum peut être pas ... ^^

Les services de messagerie fonctionnent ?
Sont-ils configurés?
lorsque le service tombe et redemarre je ne recois pas de mail... 🙁 Je suis vraiment newbie sous linux, et je ne sais pas si les services mails sont activés :$ comment pourrais je savoir ?

Merci
service sendmail status ou service postfix status (en fonction du MTA utilisé)

ou

telnet localhost 25
[root@serfed ~]# service sendmail status
sendmail (pid 2389 2381) en cours d'exécution...

Il a l'air actif.... 🙁
Si je comprends bien, mon script permet d'envoyer un mail à un utilisateur local ! Ne serait ce pas possible d'envoyer un mail sur une adresse du type monmail@hotmail.com ?
Si mais il faut que tes services de messagerie fonctionnent bien (d'ou le test) ^^
[root@serfed cron]# mail root@bts.leo
Subject: test
test

.
Cc:

Ensuite le suis allé voir dans le fichier /var/spool/mail/root

Mais mon mail n'apparait pas n'est ce pas le bo chemin lors de l'envoi de mon mail ? root@bts.leo est ce bon alors que le nom de mon serveur n'apparait pas !?

Désolé pour toutes ces questions de newbie :s :s :s

Merci beaucoup !
Préféres dans un premier temps la syntaxe suivante :
Si tu veux envoyer un mail vers une adresse externe : mail toto@toto.com
Si tu veux envoyer un mail vers un utilisateur local : mail user
j'ai bien recu le mail généré par "mail root"

From root@serfed.bts.leo Tue May 29 16:28:42 2007
Return-Path: <root@serfed.bts.leo>
Received: from serfed.bts.leo (serfed.bts.leo [127.0.0.1])
by serfed.bts.leo (8.13.8/8.13.8) with ESMTP id l4TESg1C009287
for <root@serfed.bts.leo>; Tue, 29 May 2007 16:28:42 +0200
Received: (from root@localhost)
by serfed.bts.leo (8.13.8/8.13.8/Submit) id l4TESgG6009286
for root; Tue, 29 May 2007 16:28:42 +0200
Date: Tue, 29 May 2007 16:28:42 +0200
From: root <root@serfed.bts.leo>
Message-Id: <200705291428.l4TESgG6009286@serfed.bts.leo>
To: root@serfed.bts.leo
Subject: test

test

Cependant je n'ai pas reçu le mail que je me suis envoyé sur mon adresse mail 🙁
1/ Vérifies la file d'attente (mailq)
2/ Vérifies les logs
[root@serfed mail]# mailq
/var/spool/mqueue (7 requests)
-----Q-ID----- --Size-- -----Q-Time----- ------------Sender/Recipient-----------
l4TESXOf009282* 5 Tue May 29 16:28 <root@serfed.bts.leo>
<thomas.villena@gmail.com>
l4TEJ1sY009199 6 Tue May 29 16:19 <root@serfed.bts.leo>
(Deferred: Connection refused by bts.leo.)
<root@bts.leo>
l4TDp1aY008888 0 Tue May 29 15:51 <root@serfed.bts.leo>
(Deferred: Connection timed out with gsmtp183.google.com.)
<thomas.villena@gmail.com>
l4TDX1hO008337 0 Tue May 29 15:33 <root@serfed.bts.leo>
(Deferred: Connection timed out with gsmtp163.google.com.)
<thomas.villena@gmail.com>
l4TDdKmk008441 5 Tue May 29 15:39 <root@serfed.bts.leo>
(Deferred: Connection timed out with gsmtp163.google.com.)
<thomas.villena@gmail.com>
<glok06@gmail.com>
l4TDP2G1008025 0 Tue May 29 15:25 <root@serfed.bts.leo>
(Deferred: Connection timed out with gsmtp183.google.com.)
<thomas.villena@gmail.com>
l4TDM2hu007953 0 Tue May 29 15:22 <root@serfed.bts.leo>
(Deferred: Connection timed out with gsmtp183.google.com.)
<thomas.villena@gmail.com>
Total requests: 7

voila ma file d'attente.... Je ne comprends pas pourquoi il y a Connection Timed Out ! Y'aurait il des parametres a modifier pour pallier à ce probleme !?
As-tu une restriction de sortie SMTP sur ton réseau ?
normalement aucune ! 😢

Je pense que je vais m'arreter la pour aujourd'hui, je suis dessus depuis ce matin... Je m'y remets demain, je vais chercher un peu ce soir et vous tiens au courant demain ....

Merci beaucoup pour votre aide !