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.
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.
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
Puisque les nouveaux scripts sont en deux parties, nous allons les éditer chacun leur tour.
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
!
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 !
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
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
).
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.
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 '' \
debug
et file option_file
de pppdComme 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 \