Page suivantePage pr�c�denteTable des mati�res

15. Automatiser votre connexion - Cr�er les scripts de connexion

M�me si vous pouvez continuer � vous connecter � la main comme montr� ci-dessus il est plus sympa de faire quelques scripts pour automatiser tout �a.

Quelques scripts vont automatiser la connexion et le lancement de PPP, vous n'aurez alors plus qu'� envoyer une seule commande (en �tant root ou membre du groupe PPP) pour lancer votre connexion.

15.1 Scripts de connexion pour l'authentification nom utilisateur/mot de passe

Si votre FAI n'a pas besoin d'utiliser PAP/CHAP, ces scripts sont faits pour vous !

Si le paquetage ppp est correctement install�, vous devez avoir deux fichiers d'exemple. Pour PPP 2.1.2 il sont dans /usr/sbin et pour PPP 2.2 il sont dans /etc/ppp/scripts. Ils s'appellent

pour PPP-2.1.2

ppp-on
ppp-off

et pour PPP 2.2

ppp-off
ppp-on
ppp-on-dialer

Maintenant, si vous utilisez PPP 2.1.2, je vous presse fermement de d�truire ces fichiers d'exemple. Il y a pleins de probl�mes potentiels avec ceux-ci - et ne me dites pas qu'ils marchent correctement - je les ai �galement utilis� pendant des ann�es (et les recommandait m�me dans la premi�re version de ce HOWTO) !

Pour les utilisateurs de PPP 2.1.2, voici de BIEN MEILLEURS mod�les, pris dans la distribution 2.2 de PPP. Je vous conseille de les copier et d'utiliser ces scripts � la place des anciens de PPP-2.1.2.

15.2 Le script ppp-on

C'est le premier des DEUX scripts qui lance la connexion.


#!/bin/sh
#
# Script pour initialiser une connexion PPP. C'est la premiere partie de deux
# scripts. Ce ne sont pas des scripts securises, puisque les codes sont
# visibles avec la commande 'ps'. Cependant ils sont simples.
#
# Ce sont des parametres a changer selon les besoins
TELEPHONE=555-1212    # Le numero de telephone de la connexion
ACCOUNT=george        # Le nom du compte (comme dans 'George Burns')
PASSWORD=gracie       # Le mot de passe du compte (et 'Gracie Allen')
LOCAL_IP=0.0.0.0      # L'adresse IP locale si elle est connue Dynamic = 0.0.0.0
REMOTE_IP=0.0.0.0     # Adresse IP distante. Normally 0.0.0.0
NETMASK=255.255.255.0 # Le masque reseau si besoin
#
# Les exporter pour qu'ils soit disponible avec 'ppp-on-dialer'
export TELEPHONE ACCOUNT PASSWORD
#
# C'est l'emplacement du script qui compose le numero et se connecte.
# Utilisez les noms de fichiers absolus, car la variable $PATH n'est pas
# utilisee avec l'option connect. (Faire ca en etant 'root' entraine un
# trou de securite.)
#
DIALER_SCRIPT=/etc/ppp/ppp-on-dialer
#
# Commencer la connexion
#
#
exec /usr/sbin/pppd debug /dev/ttySx 38400 \
 $LOCAL_IP:$REMOTE_IP \
 connect $DIALER_SCRIPT

Voici le script ppp-on-dialer :


#!/bin/sh
#
# C'est la deuxieme partie du script ppp-on. Il contient le protocole de
# connexion de la connexion desiree.
#
/usr/sbin/chat -v                                                 \
 TIMEOUT         3                               \
 ABORT           '\nBUSY\r'                      \
 ABORT           '\nNO ANSWER\r'                 \
 ABORT           '\nRINGING\r\n\r\nRINGING\r'    \
 ''              \rAT                            \
 'OK-+++\c-OK'   ATH0                            \
 TIMEOUT         30                              \
 OK              ATDT$TELEPHONE                  \
 CONNECT         ''                              \
 ogin:--ogin:    $ACCOUNT                        \
 assword:        $PASSWORD

Avec PPP-2.2, le script ppp-off ressemble � :


#!/bin/sh
######################################################################
#
# Determine le peripherique a terminer.
#
if [ "$1" = "" ]; then
 DEVICE=ppp0
else
 DEVICE=$1
fi
######################################################################
#
# Si le fichier pid ppp0 est present alors le programme est lance. Le stopper.
if [ -r /var/run/$DEVICE.pid ]; then
 kill -INT `cat /var/run/$DEVICE.pid`
#
# Si le kill ne marche pas, alors il n'y a pas de processus lance pour ce pid.
# Cela peut signifier que le fichier de lock a ete laisse. Vous souhaitez
# peut-etre detruire le fichier de lock en meme temps.
 if [ ! "$?" = "0" ]; then
 rm -f /var/run/$DEVICE.pid
 echo "ERROR: Removed stale pid file"
 exit 1
 fi
#
# Succes. pppd a enlever tout ce qu'il avait cree.
 echo "PPP link to $DEVICE terminated."
 exit 0
fi
#
# Le processus ppp ne marche pas pour ppp0
echo "ERROR: PPP link is not active on $DEVICE"
exit 1

15.3 Editer les scripts de d�marrage de PPP fournis

Puisque les nouveaux scripts sont en deux parties, nous allons les �diter chacun leur tour.

Le script ppp-on

Vous devez �diter ces fichiers pour contenir VOTRE nom utilisateur de votre FAI, VOTRE mot de passe de votre FAI, et le num�ro de t�l�phone de votre FAI.

Chacune des lignes ressemblant � TELEPHONE= d�finissent une variable du shell contenant les informations � droite du '=' (mise � part les commentaires �videmment). �diter donc toutes les lignes de ce fichier pour qu'il corresponde a votre FAI et votre connexion.

De plus, si vous configurez l'adresse IP (si vous avez besoin) dans le fichier /etc/ppp/options, DETRUISEZ les lignes mentionnant


$LOCAL_IP:$REMOTE_IP \

Assurez-vous �galement que la variable shell DIALER_SCRIPT pointe sur le chemin complet du script d'appel qui sera r�ellement utilis�. Ainsi, si vous d�placez ou renommez ce script, assurez-vous que vous modifier correctement cette ligne dans le script ppp-on !

Le script ppp-on-dialer

C'est le deuxi�me des scripts qui lance votre liaison PPP.

Remarque : un script chat est normalement sur une ligne compl�te. Les backslashs sont utilis�s pour permettre � la ligne de se r�partir sur plusieurs lignes physiques (pour une lisibilit� plus humaine) et ne font pas partie du script lui-m�me.

Cependant, il est tr�s utile de le regarder en d�tail, comme cela nous comprenons ce qu'il est r�ellement suppos� faire !

15.4 Ce que script Chat signifie...

Un script chat est une s�quence de paires de "cha�nes d'attentes" et de "cha�nes d'envoi ". En particulier, remarquez que nous attendons TOUJOURS quelque chose avant d'envoyer quoi que ce soit.

Si nous envoyons quelque chose SANS avoir rien re�u avant, nous devons attendre une cha�ne vide avant (indiqu�e par un "") Et de la m�me mani�re attendre quelque chose sans avoir rien envoy� ! Ainsi, si les cha�ne consistent en quelques mots, (c.-�-d. NO CARRIER), vous devez entourez les cha�nes par des quotes pour qu'elles soient vues comme une seule entit� par chat.

La ligne chat de notre mod�le est :


exec /usr/sbin/chat -v

Invoque chat, le -v indique � chat de mettre toutes ses entr�e/sorties dans le journal syst�me (g�n�ralement /var/log/messages). Une fois que votre script chat marchera correctement, �ditez cette ligne et enlevez le -v pour �conomiser des messages inutiles dans votre syslog.


TIMEOUT         3

�a d�finit un temps d'attente de trois secondes avant la r�ception d'une entr�e attendue. Vous devrez l'augmenter � 5 ou 10 secondes si vous utilisez un modem extr�mement lent !


ABORT           '\nBUSY\r'

Si la cha�ne BUSY est re�ue, abandonner l'op�ration.

M


ABORT           '\nNO ANSWER\r'

Si la cha�ne NO ANSWER est re�ue, abandonner l'op�ration.


ABORT           '\nRINGING\r\n\r\nRINGING\r'

Si la cha�ne RINGING est re�ue de mani�re r�p�t�e, abandonner l'op�ration. C'est parce que quelqu'un vous appelle !


"              \rAT

Ne rien attendre du modem et envoyer la cha�ne AT.


OK-+++\c-OK   ATH0

C'est un petit plus compliqu� car cela utilise certaines capacit�s de chat � r�cup�rer les erreurs.

�a veux dire...Expect OK, si on ne l'a pas re�u (parce que le modem n'est pas en ligne de commande) alors envoyer +++ (la cha�ne standard des modems compatible Hayes pour retourner en ligne de commande) et attendre OK. Ensuite envoyer ATH0 (la cha�ne pour raccrocher). Cela permet au script de r�pondre � la situation ou votre modem avait laiss� la ligne d�croch�e !


TIMEOUT         30

Mettre le temps d'attente � 30 secondes pour le reste du script. Si vous avez des soucis avec des abandons du script chat � cause de timeout, augmentez cette valeur � 45 secondes ou plus.


OK              ATDT$TELEPHONE

Attends un OK (la r�ponse du modem � la commande ATH0) et compose le num�ro que nous voulez appeler.


CONNECT         ''

Attendre CONNECT(ce que le modem nous envoie lorsque le modem distant d�croche) et n'envoie rien en r�ponse.


ogin:--ogin:    $ACCOUNT

Une fois encore nous avons une r�cup�ration d'erreur ici. Attendre le message de login (...ogin:) mais si nous ne le recevons pas au bout d'un certain temps, envoyer un retour chariot et attendre une nouvelle fois le message de login. Lorsque le message est re�u, envoyer le nom utilisateur (stock� dans la variable shell $ACCOUNT).


assword:        $PASSWORD

Attendre le message du mot de passe et envoyer le mot de passe (l� aussi stock� dans une variable shell).

Ce script chat � une capacit� de r�cup�ration d'erreurs r�sonnable. Chat poss�de bien d'autres possibilit�s que celles d�taill�s. Pour plus d'informations, consulter la page de manuel de chat (man 8 chat).

D�marrer PPP sur le serveur final

Bien que le script ppp-on-dialer soit parfait pour les serveurs qui lancent automatiquement pppd sur le serveur final une fois que vous �tes connect�s, certains serveurs n�cessitent que vous lanciez PPP explicitement sur le serveur.

Si vous avez besoin d'envoyer une commande de lancement de PPP sur le serveur, vous DEVEZ �diter le script ppp-on-dialer.

A la fin du script (apr�s la ligne password) ajouter une paire attente envoi en plus - elle cherchera un message de login (une suite de caract�res qui ont une signification particuli�re dans le shell Bourne - comme $ et [ ou ] (les crochets ouverts et ferm�s).

Une fois que chat � obtenu le prompt du shell, chat doit envoyer la commande de d�marrage de ppp n�cessaire sur le serveur PPP de votre FAI.

Pour ma part, mon serveur PPP utilise un prompt Bash standard


[hartr@kepler hartr]$

et n�cessite que je tapes


ppp

pour lancer ppp sur le serveur.

Une id�e judicieuse peut �tre d'ajouter un peu de r�cup�ration d'erreur, dans mon cas j'utilise


 hartr--hartr    ppp

Cela signifie que si je ne re�ois pas le prompt dans le temps imparti, j'envoie un retour chariot et je recherche le prompt une nouvelle fois.

Une fois que le message est re�u, j'envoie la cha�ne ppp.

Remarque : n'oubliez pas d'ajouter un \ � la fin de la ligne pr�c�dente pour que chat pense que le script de connexion de chat est toujours sur une seule ligne !

Malheureusement, certains serveurs g�n�rent un nombre de messages tr�s variable ! Vous aurez peut-�tre besoin de vous connecter plusieurs fois avec minicom pour comprendre comment �a marche et r�cup�rer une cha�ne "d'attente" stable.

15.5 Un script chat pour les connections authentifi�es avec PAP/CHAP

Si votre FAI utilise PAP/CHAP, alors votre script chat est bien plus simple. Tout ce que votre script chat doit faire est de composer le num�ro, attendre la connexion et ensuite laisser pppd s'occuper du processus de connexion !


#!/bin/sh
#
# C'est la deuxieme partie du script ppp-on. Il contient le protocole de
# connexion de la connexion desiree.
#
exec /usr/sbin/chat -v                                  \
 TIMEOUT         3                               \
 ABORT           '\nBUSY\r'                      \
 ABORT           '\nNO ANSWER\r'                 \
 ABORT           '\nRINGING\r\n\r\nRINGING\r'    \
 ''              \rAT                            \
 'OK-+++\c-OK'   ATH0                            \
 TIMEOUT         30                              \
 OK              ATDT$TELEPHONE                  \
 CONNECT         ''                              \

15.6 Les options debug et file option_file de pppd

Comme nous l'avons d�j� vu, vous pouvez activer les informations de d�buggage avec l'option -d de pppd. L'option 'debug' est �quivalente � celle-ci.

Puisque vous �tablissez la connexion avec un nouveau script, laissez pour le moment les informations de d�buggage. (Attention : si votre espace disque est r�duit, les �changes de connexion de pppd peuvent rapidement augmenter votre fichier syslog et vous amener des probl�mes - mais pour aller jusque l�, il faut que vous essayez et vous �chouiez vos connexions un certain temps).

Une fois que tout marche correctement, vous pouvez alors enlever cette option.

Si vous avez appel� votre fichier d'options de ppp autrement que /etc/ppp/options ou /etc/ppp/options.ttySx, sp�cifiez le nom du fichier avec l'option file de pppd :


exec /usr/sbin/pppd debug file options.myserver /dev/ttyS0 38400 \


Page suivantePage pr�c�denteTable des mati�res

Hosting by: Hurra Communications GmbH
Generated: 2007-01-26 18:01:37