8. Installation de la Connexion à la Demande

Contenu de cette section

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