Ce script utilise netstat pour voir si des packets entrent sur l'interface pppoe0.

Il m'arrive -c'est rare- que la perte de la connexion ne soit pas détectée par pppoe. D'où ce petit script.

Evidemment, cela ne fonctionne que s'il y a un traffic plus ou moins permanent sur pppoe0. Mais c'est toujours le cas chez moi (ntpd, serveurs divers …). Au pire on peut utiliser des ping réguliers pour créer ce traffic.

Le script prend deux paramètres : l'intervalle de temps entre deux vérifications. Et le temps nécessaire à la reconnexion pppoe (en seconde).

Par exemple “pppoeck 60 30” vérifie toutes les 60 secondes et laisse 30 secondes pour l'établissement de la connexion.

Enfin c'est très facile de l'adapter pour FreeBSD en regardant tun0 (j'ai parfois des soucis aussi).

#!/bin/sh
# Script de reconnexion automatique pour pppoe0
#       utilise netstat pour voir s'il y a des packets qui entrent
#       sur pppoe0
#
# Os: NetBSD 1.6.2
# licence: euh ?
# Patrick Lamaiziere 17/06/05

oldipk="0"
logger="/usr/bin/logger -i -s -t pppoeck"

if [ $# -lt 2 ]
then
        echo Usage: pppoeck '<intervalle_de_controle> <temps_de_reconnexion>'
        exit 1
fi

while :
do
        /bin/sleep $1
        ipk=`/usr/bin/netstat -I pppoe0 | /usr/bin/awk '$3 ~ /<Link>/ { print $4; }'`
        if [ $ipk -eq $oldipk ]
        then
                ${logger} "lien mort. redemarrage de pppoe0"
                /sbin/ifconfig -m pppoe0 down
                /bin/sleep 2
                /sbin/ifconfig -m pppoe0 up
                /bin/sleep $2
        fi
        oldipk=$ipk
done
netbsd/reconnexion_auto_adsl.txt · Last modified: 2010/01/12 13:29 (external edit)