#!/bin/sh # # Script de connexion automatique si je ne suis pas déjà connecté. # # Utilisation : # autoppp on|off|mail [man] [debug] # # CONFIGURATION FAI=nom-de-votre-connexion SENDTO=toto@chez.lui CONNECT="pon $FAI" DECONNECT=poff INTERFACE="ppp0" DEBUGFILE=/tmp/autopppdebug #============================================================================= # VOUS n'AVEZ RIEN À MODIFIER EN DESSOUS DE CETTE LIGNE #============================================================================= # CONSTANTES # FAUX=0 VRAI=1 AUTO="auto" # 0 MANUAL="manual" # 1 FILE=/tmp/connex DEBUGSTDERR=1 DEBUGMAIL=2 DEBUGSTDOUT=3 DEBUG2FILE=4 VERSION="1.1" # PROGRAMMES # IFCONFIG=/sbin/ifconfig GREP=/bin/grep MAIL=/usr/bin/mail CAT=/bin/cat CUT=/usr/bin/cut AWK=/usr/bin/awk # CODES D'ERREUR # NOERR=0 # VARIABLES # COMMAND="quit" MODE_MANUEL=$FAUX DEBUGSTYLE=$DEBUG2FILE DEBUG=$FAUX NOW=`date '+%a %d %b %Y %X'` PREPRINT="[$NOW]" #============================================================================= # TRAITEMENT SOMMAIRE DES ARGUMENTS # if [ "$1" = "on" -o "$1" = "off" -o "$1" = "mail" ]; then COMMAND=$1 fi if [ "$2" = "man" ]; then MODE_MANUEL=$VRAI shift fi if [ "$2" = "debug" ]; then DEBUG=$VRAI fi #============================================================================= # EXECUTION DES COMMANDES # if [ $DEBUG = $VRAI ]; then if [ $DEBUGSTYLE = $DEBUGSTDERR ]; then DEBUGOUTPUT=/dev/stderr elif [ $DEBUGSTYLE = $DEBUGSTDOUT ]; then DEBUGOUTPUT=/dev/stdout elif [ $DEBUGSTYLE = $DEBUG2FILE ]; then DEBUGOUTPUT=$DEBUGFILE fi if [ $DEBUGSTYLE != $DEBUGMAIL ]; then echo "$PREPRINT -- " >> $DEBUGOUTPUT fi fi #=========================================================================== # LANCEMENT DE LA CONNEXION # if [ "$COMMAND" = "on" ]; then # Vérification de la présence d'un pré-existante connexion CONNEX=`$IFCONFIG | $GREP $INTERFACE` if [ "$CONNEX" != "" ]; then # Il y en avait déjà une ! On écris que 1 connexion était lancée. if ! [ -f $FILE ]; then echo $MANUAL > $FILE fi if [ $DEBUG = $VRAI ]; then # Mode debug => envoi d'un mail pour le dire. CORPS1="La connexion était déjà lancée.\n" CORPS2="Écriture de \"$MANUAL\" dans $FILE.\n" CORPS3="\$CONNEX = $CONNEX" CORPS="$CORPS1$CORPS2$CORPS3" if [ $DEBUGSTYLE = $DEBUGMAIL ]; then echo -e $CORPS | $MAIL root -s "Lancement de la connexion auto." else echo "$PREPRINT Lancement de la connexion auto." >> $DEBUGOUTPUT echo -e $CORPS >> $DEBUGOUTPUT fi fi else # Il n'y en avait pas. Mode manuel ou pas ? if [ $MODE_MANUEL = $VRAI ]; then # Oui MODE=$MANUAL else # Non MODE=$AUTO fi echo $MODE > $FILE if [ $DEBUG = $VRAI ]; then # Mode debug =< envoi d'un mail pour prévenir du lancement CORPS="Connexion en cours...\nÉcriture de \"$MODE\" dans $FILE." if [ $DEBUGSTYLE = $DEBUGMAIL ]; then echo -e $CORPS \ | $MAIL root -s "Lancement de la connexion auto." else echo "$PREPRINT Lancement de la connexion auto." >> $DEBUGOUTPUT echo -e $CORPS >> $DEBUGOUTPUT fi fi $CONNECT fi #=========================================================================== # ARRÊT DE LA CONNEXION # elif [ "$COMMAND" = "off" ]; then # Y a-t-il une connexion en cours ? CONNEX=`$IFCONFIG | $GREP $INTERFACE` if [ "$CONNEX" != "" ]; then # Oui, donc... # Extinction demandée : était-on en mode auto ou manuel ? CONNTYPE=`$CAT $FILE` if [ "$CONNTYPE" = "$AUTO" ]; then # Mode auto donc déconnexion. $DECONNECT if [ $DEBUG = $VRAI ]; then CORPS1="La connextion était lancée automatiquement :\n" CORPS2="$FILE contient $CONNTYPE." CORPS="$CORPS1$CORPS2" if [ $DEBUGSTYLE = $DEBUGMAIL ]; then echo -e $CORPS \ | $MAIL root -s "Arrêt de la connection auto." else echo "$PREPRINT Arrêt de la connexion auto." >> $DEBUGOUTPUT echo -e $CORPS >> $DEBUGOUTPUT fi fi else # Mode manuel if [ $DEBUG = $VRAI ]; then CORPS1="La connextion _n_'était _pas_ lancée automatiquement :\n" CORPS2="$FILE contient $CONNTYPE.\n" if [ $MODE_MANUEL = $VRAI ]; then CORPS3="Arrêt _MANUEL_ ..." else CORPS3="Arrêt inutile..." fi CORPS="$CORPS1$CORPS2$CORPS3" if [ $DEBUGSTYLE = $DEBUGMAIL ]; then echo -e $CORPS \ | $MAIL root -s "Arrêt de la connection auto." else echo "$PREPRINT Arrêt de la connexion auto." >> $DEBUGOUTPUT echo -e $CORPS >> $DEBUGOUTPUT fi fi if [ $MODE_MANUEL = $VRAI ]; then $DECONNECT fi fi else # Il n'y avait pas de connexion lancée et donc pas à arrêter. if [ $DEBUG = $VRAI ]; then # Mode debug => envoi d'un mail pour le dire. CORPS="ARRÊT DE LA CONNEXION : aucune connexion n'était lancée.\n" if [ $DEBUGSTYLE = $DEBUGMAIL ]; then echo -e $CORPS \ | $MAIL root -s "Arrêt de la connexion auto." else echo "$PREPRINT Arrêt de la connexion auto." >> $DEBUGOUTPUT echo -e $CORPS >> $DEBUGOUTPUT fi fi fi # Effacement du fichier de connexion s'il existe. if [ -f $FILE ]; then rm -f $FILE fi #=========================================================================== # ENVOI DU MESSAGE D'AVERTISSEMENT DE LA CONNEXION # elif [ "$COMMAND" = "mail" ]; then # Y a-t-il une connexion en cours ? CONNEX=`$IFCONFIG | $GREP $INTERFACE` if [ "$CONNEX" != "" ]; then # Oui, donc... IP=`$IFCONFIG $INTERFACE | $AWK '$1 ~ /^inet$/ {print $2}' | $CUT -d ":" -f 2` # Envoi de message demandé : était-on en mode auto ou manuel ? CONNTYPE=`$CAT $FILE` if [ "$CONNTYPE" = "$AUTO" ]; then # Mode automatique : on envoie le mail. if [ $DEBUG = $VRAI ]; then CORPS1="Envoi du mail à $SENDTO :\n" CORPS2="$FILE contient $CONNTYPE.\n" CORPS3="Adresse IP de la machine : $IP" CORPS="$CORPS1$CORPS2$CORPS3" if [ $DEBUGSTYLE = $DEBUGMAIL ]; then echo -e $CORPS \ | $MAIL root -s "Envoi de mail à la connexion." else echo "$PREPRINT Envoi de mail à la connexion." >> $DEBUGOUTPUT echo -e $CORPS >> $DEBUGOUTPUT fi fi CORPS="Adresse IP de la connexion :\n$IP" echo $CORPS | $MAIL $SENDTO -s Connection else # Mode manuel : on n'envoie pas le mail. if [ $DEBUG = $VRAI ]; then CORPS1="Envoi du mail à $SENDTO _non_ effectuté :\n" CORPS2="$FILE contient $CONNTYPE.\n" CORPS3="Adresse IP : $IP" CORPS="$CORPS1$CORPS2$CORPS3" if [ $DEBUGSTYLE = $DEBUGMAIL ]; then echo -e $CORPS \ | $MAIL root -s "Envoi de mail à la connexion." else echo "$PREPRINT Envoi de mail à la connexion." >> $DEBUGOUTPUT echo -e $CORPS >> $DEBUGOUTPUT fi fi fi else # Il n'y avait pas de connexion lancée donc pas d'envoi de mail. if [ $DEBUG = $VRAI ]; then # Mode debug => envoi d'un mail pour le dire. CORPS="ENVOI DE MESSAGE : aucune connexion n'était lancée.\n" if [ $DEBUGSTYLE = $DEBUGMAIL ]; then echo -e $CORPS \ | $MAIL root -s "Envoi de mail à la connexion." else echo "$PREPRINT Envoi de mail à la connexion." >> $DEBUGOUTPUT echo -e $CORPS >> $DEBUGOUTPUT fi fi fi #=========================================================================== # AFFICHAGE DE L'AIDE # else echo "autoppp $VERSION (c) Thomas Nemeth 2001." echo "Usage : autoppp on|off|mail [man] [debug]" echo echo "on : lance la connexion automatique" echo "off : arrête la connexion automatique" echo "mail : envoie un mail pour prévenir que la connexion est lancée," echo " avec l'IP." echo "man : lancer ou arrêter la connexion en mode manuel" echo "debug : utiliser le mode debug" echo echo "L'option debug DOIT se trouver en DERNIER, si vous la mettez." echo fi