On Mon, Dec 09, 2002 at 09:31:27PM +0000, Fran�ois Boisson wrote:
>> Si tu est en PPTP, voici comment je proc�de:

>> Je cr�� ce script:

>> /usr/sbin/pptp 10.0.1.138 nodetach call provider >& /dev/null
>> killall -INT pptp
>> sleep 3
>> rm -f /var/run/pptp/10.0.1.138

>> Et puis, je lance ce script par une entr�e dans /etc/inittab. Ainsi,
>> d�s que la connexion est rompue, elle est relanc�e.
> 
> Ca m'int�resse ton histoire,

> Je fais b�tement
> pptp 10.0.0.138
> J'imagine que les options qui suivent 10.0.1.138 sont pass� � pppd.

Oui: nodetach, �a veut dire que la commande (pppd) ne va pas forker en
background, mais ne va retourner qu'apr�s rupture de la connexion.

"call provider", c'est parce que les options qui vont bien sont dans
"/etc/ppp/peers/provider" chez moi. Si avant, tu faisais simplement
"pptp 10.0.0.138", alors mets "pptp 10.0.0.138 nodetach" dans le
script.

> Donc si pppd se termine, tu tue correctement le pptp et tu as mis
> une entr�e respawn dans /etc/initab du type
> 1:2345:respawn:/usr/local/bin/nomdetonscript

Presque: La ligne exacte est:

in:A:ondemand:/etc/ppp/clean_pptp

Ceci me permet de ne lancer la connection qu'au moment o� je veux (au
hasard... apr�s que les interfaces r�seau soient "up", mais avant que
les serveurs (apache, ...) ne se lancent). En fait, c'est lanc� par le
script /etc/ppp/ppp_on_boot, qui

1) est ex�cutable
2) est lanc� automatiquement (si ex�cutable) par /etc/init.d/ppp au
   boot, au bon moment (j'y ai rajout� un sleep pour que mes serveurs
   ne se lancent qu'une fois la connexion �tablie).
3) Et le voici:
#!/bin/sh
telinit a


Par contre, je ne peux pas stopper la connexion sans aller �diter
/etc/inittab :-)


Par contre, dans clean_pptp, le ">& /dev/null" est tr�s
important. Sans �a, au boot, pppd (ou pptp, je sais plus), veut �crire
quelque chose sur le terminal _avant_ que la connexion ne soit faite,
et il n'y arrive que _apr�s_ que le dernier script de /etc/init.d/ aie
fini, ce qui veut dire que mes serveurs se lan�aient avant
�tablissement de la connexion :-(. Avec �a, �a va impec.



Ah oui, tiens, sur une machine OpenBSD que j'ai install�e r�cemment,
j'ai fait un peut diff�remment. L'avantage de cette m�thode, c'est que
l'on a pas un shell qui ne fait qu'attendre la fin de la connexion, et
ne sert � rien d'autre. �a consomme donc moins de ressources. �
l'occasion, je vais convertir mes machines Debian � ce syst�me aussi,
je crois... Le fichier /etc/ppp/clean_pptp est tel que voici:

--------------- d�but script --------------
#!/bin/sh
# $OpenBSD: pptp_reconnect,v 1.3 2001/06/08 17:59:19 fgsch Exp $ 
# Modified by Lionel to be a clean _connect_ script
# meant to be launched by init
#
# PPTP connect script
#
MODEMIP=10.0.1.138
 
PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/sbin

if [ "$MODEMIP" = "" ]; then
        echo "You have to edit the $0 script."
        exit
fi

echo "Killing pppd."
for s in INT KILL; do kill -$s `ps -ax|grep pppd|grep -v grep|awk '{print $1}'` 
&& /bin/sleep 3; done

echo "Killing pptp."
for s in TERM KILL; do kill -$s `ps -ax|grep pptp|grep -v clean_pptp|grep -v 
grep|awk '{print $1}'` && /bin/sleep 3; done

if [ -S /var/run/pptp/$MODEMIP ]; then
        /bin/rm -f /var/run/pptp/$MODEMIP
fi

echo "Establishing connection."
echo "=========================================================" >> 
/var/log/ppp.log 
echo "Establishing connection at `date`." >> /var/log/ppp.log 
exec /usr/local/sbin/pptp $MODEMIP nodetach >> /var/log/ppp.log 2>&1
--------------- fin script --------------

La construction � base de grep et d'awk, c'est surtout parce qu'il n'y
a pas de commande "killall" sous BSD, �a fait la m�me chose :-). Le
init des BSD n'ayant pas de notion de "ondemand", j'ai utilis� cette
ligne dans /etc/ttys:

ttyp0   "/etc/ppp/clean_pptp"           network on



> J'ai bien compris (La machine en question est la passerelle de tout
> un lyc�e et en p�riode d'inscription je ne peux pas me permettre
> d'erreurs)?

Gniark, gniark, gniark.

-- 
Lionel

Attachment: pgpCXKBbJEHHT.pgp
Description: PGP signature

Répondre à