J’ai fait un mixe d’un peu tte les propositions:
dans /etc/crontab:
*/10 20-23 * * * root stopsrv.sh >> /dev/null
*/10 00-05 * * * root stopsrv.sh >> /dev/null
je n’ai pas trouvé le moyen de faire comprendre que je voulais entre 20h et 05h en une seule fois. (j’ai essayé le 20-05, mais rien ne c’est passé…
et le code de stopsrv.sh
[code]#!/bin/bash
#Liste les IPs qui sont sous surveillance du serveur
ips=“192.168.0.3 192.168.0.2 192.168.0.5”
#variable d’état. Initialisé pour que le serveur stop
etat=“stopnow”
#heure de début de veille
dodoTime=“20:30”
#heure de reveille
wakeTime=“05:45”
date > /var/www/data/srvstop.txt
for i in $ips
do
#execution du ping sur les adresses IP
ping -c 1 $i > /dev/null
#si une adresse répond, alors on ne stoppe pas le serveur
if [ $? -eq 0 ] ; then
etat=“nostop”
fi
done
#si l’état indique que le serveur doit stoppper
if [ “$etat” = “stopnow” ]; then
#suivant l’heure (soir avant minuit / apres minuit) on adapte la commande rtcwake
heure=$(date --date “now” +%H)
if [ “$heure” -ge 12 ]; then
timer=$(date --date “tomorrow $wakeTime” +%s)
fi
if [ "$heure" -lt 12 ]; then
timer=$(date --date "$wakeTime" +%s)
fi
date >> /var/www/data/srvstop.txt
rtcwake -m disk -t $timer >> /var/www/data/srvstop.txt
fi[/code]
Pour l’heure, les redirections vers var/data/srvstop.txt sont pour du debugg.
je ne suis pas un expert en bash, alors si vous voyez des choses améliorables, c’est le moment.
Je me passe moi même le sujet comme résolu… si c’est pas la classe ca