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
pgpCXKBbJEHHT.pgp
Description: PGP signature

