J'ai configuré récemment un vieux PPro 200 en passerelle ADSL. Pour cela, je me suis notamment servi du script de reconnection automatique proposé par shado (Tip FreeBSD/PPPoE). Mais je me suis permis de l'améliorer et maintenant j'apporte à mon tour ma pierre à l'édifice.

----------- Début du script -----------
#!/usr/local/bin/bash
# Script de reconnection automatique

#216.239.39.101 est l'ip de google.com au 24/02/2002

testconnect() {
CONNECT=`/sbin/ping -c 3 216.239.39.101 | grep packets | cut -d' ' -f4`
}

doconnect() {
logger -t reconnect Essai reconnection.
/usr/bin/killall -HUP ppp
/usr/sbin/ppp -ddial wanadoo
sleep 5
}

displayip() {
IP=`/sbin/ifconfig | grep -A 1 tun0 | grep inet | cut -d' ' -f2`
logger -t reconnect Adresse IP : "$IP"
}

logger -t reconnect Test connection.
testconnect
if [ "$CONNECT" = "0" ];
   then
   logger -t reconnect Connection perdue.
   doconnect
   testconnect
   if [ "$CONNECT" != "0" ];
      then
      logger -t reconnect Reconnection OK.
      displayip
      else
      logger -t reconnect Reconnection manquee.
   fi
   else
   logger -t reconnect Connection OK.
   displayip
fi

exit 0

# FIN
----------- Fin du script -----------

La procédure testconnect récupère le nombre de paquets IP revenus après un ping sur une URL quelconque. Ici c'est un serveur de google.com parce que je suis abonné à Wanadoo et que leur serveur/routeur (wanadoo.fr) n'autorise pas le ping. Ce nombre est stocké dans CONNECT.

La procédure doconnect tente une reconnection (le nom de ma connection (configuré dans /etc/ppp/ppp.conf) est wanadoo : à remplacer par le nom que vous avez configuré) et attend 5 secondes.

La procédure displayip récupère l'adresse IP attribuée par mon provider à l'interface tun0 et l'envoie au logger. Ça c'est parce que j'ai une adresse IP dynamique et que je veux surveiller la fréquence de changement.

Le “wait 5” de la procédure doconnect est nécessaire car sans elle l'appel de testconnect juste après doconnect ne laisse pas le temps à la reconnection de s'effectuer entièrement et le script pense que la connection n'est pas rétablie, ce qui est faux.

freebsd/reconnection_auto.txt · Last modified: 2010/01/12 13:29 (external edit)