[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Interruption de connexion sur machine distante



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


Reply to: