Crontab sur WRT54G

Mise en place du crontab sur un WRT54G sous OpenWrt RC4, permettant de maintenir le routeur à l’heure (à l’heure locale) et de le redémarrer tous les matins à 4H du matin, ci-dessous extrait du script de lancement /etc/init.d/S42cfk_startup.sh :

#!/bin/sh
#####################################################
# Script mise_en_place_crontab.sh
# Reseau local du Kermeur
# Environnement : Wrt54G, Openwrt WhiteRussian RC4
# Marc Dilasser, mail : md@lekermeur.net
#####################################################
ECHO=/bin/echo
CRONTAB=/usr/bin/crontab
TMPCRN=/tmp/cfk_crontab1
SRVNTP=www.lekermeur.net
NTPCLIENT=/usr/sbin/ntpclient

# Verifier que les executables sont presents
[ -x $CRONTAB ] || exit 2
[ -x $NTPCLIENT ] || exit 2

# Creer les repertoires s'ils n'existent pas
mkdir -p /var/spool/cron
mkdir -p /etc/crontabs
[ -L /var/spool/cron/crontabs ] || ln -s /etc/crontabs /var/spool/cron/crontabs

# Mise en place des elements crontab
# Toutes les heures a 12, remise a l'heure
$ECHO -n "12 * * * * /usr/sbin/ntpclient -c 1 -s -h $SRVNTP " > $TMPCRN
$ECHO '> /tmp/ntpclient.log' >> $TMPCRN
# Reboot du WRT tous les jours a 4H du matin
# Pour disperser les demarrages, prendre final de l'IP
SEDCMD='s/.* addr:.*\..*\..*\.\(.*\) Bcast.*/\1/'
MIN=`ifconfig eth1 | grep inet | sed -e "$SEDCMD"`
# Pour les relais, pas d'adresse en eth1, on mets 1
# Garde fou
[ "x$MIN" = "x" ] && MIN=1
MIN=$(($MIN % 60))
$ECHO "$MIN 4 * * * /sbin/reboot" >> $TMPCRN

# Mise en place du crontab
$CRONTAB $TMPCRN
# Mise a l'heure
$NTPCLIENT -c 1 -s -h $SRVNTP
# Et cerise sur la gateau, le fuseau horaire
$ECHO "CET-1CET-2,M3.5.0/02:00:00,M10.5.0/03:00:00" > /etc/TZ
### End of mise_en_place_crontab.sh ###