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