Le daemon kerneld peut être utilisé pour charger à la demande
des modules tels que PPP. Une autre possibilité signalée dans le
kerneld-HOWTO est le lancement d'un script si une route est
absente. Kerneld surveille le fichier /sbin/request-route.
Le script qui suit est la copie de celui fourni dans
modules-2.0.0.tar.gz :
/sbin/request-route:
#!/bin/sh
LOCK=/var/run/request-route.pid
export PATH=/usr/sbin:$PATH # for ppp-2.2*
#
# Ce script sera appele par kerneld avec la route demandee $1
#
chatfile=/etc/ppp/$1
#
# Si aucun script chat utilise une valeur par defaut (lien symbolique
# vers le script prefere) :
#
[ ! -f $chatfile ] && chatfile=/etc/ppp/default
#
# Vérifie si le programme tourne toujours :
#
if [ ! -f $LOCK ] ; then
pppd connect "chat -f $chatfile" &
#
# Temporisation supprimee par ip-up, a regler. Verifier les
# delais de kerneld aussi.
#
sleep 60 &
sleepid=$!
echo $sleepid > $LOCK
wait $sleepid
rm -f $LOCK
exit 0
fi
exit 1
Kerneld exécute ce script en utilisant la route absente comme
argument :
/sbin/request-route x.x.x.x
Le script utilise un fichier verrou pour eviter plusieurs
request-route simultanés.
Au début, j'utilisais un script qui était déclenché par une requête
au serveur de noms, mais depuis je préfère fonctionner avec un serveur
de noms local, le resultat sera dans la mémoire cache et un second accès
ne déclenchera pas la connexion. C'est la raison pour laquelle j'ai
changé le script pour utiliser un script chat si aucun n'existe.
Cela permet aussi de créer de multiples scripts chat pour les
différentes liaisons et d'utiliser un script chat par défaut pour
se connecter à son fournisseur de service.
Après que la liaison ait été initiée, le daemon pppd exécute le
script /ppp/ip-up qui retire le fichier verrou. Ajoutez les
commandes que vous voulez exécuter à chaque fois que la liaison est
initiée, par exemple surveiller la queue de sendmail :
#!/bin/ash LOCK=/var/run/request-route.pid [ -f $LOCK ] && kill `cat $LOCK` # # Execute ces commandes apres la connexion (exemple) : # /usr/sbin/sendmail -q
L'option idle-disconnect déconnecte automatiquement une liaison
inutilisée. Pour se déconnecter immédiatement, utilisez ppp-off :
/usr/sbin/ppp-off:.
#!/bin/sh
LOCK=/var/run/request-route.pid
DEVICE=ppp0
rm -f $LOCK
#
# Si le fichier ppp0.pid est present alors le programme tourne. Stoppez
# le.
#
if [ -r /var/run/$DEVICE.pid ]; then
kill -INT `cat /var/run/$DEVICE.pid`
#
# Si ca marche, verifier que le fichier pid est retire.
#
if [ ! "$?" = "0" ]; then
echo "removing stale $DEVICE pid file."
rm -f /var/run/$DEVICE.pid
exit 1
fi
#
# Reussite. Terminer avec le bon statut.
#
echo "$DEVICE link terminated"
exit 0
fi
#
# La liaison n'est pas active
#
echo "$DEVICE link is not active"
exit 1
Chapitre suivant, Chapitre Précédent
Table des matières de ce chapitre, Table des matières générale
Début du document, Début de ce chapitre