OVH Cloud OVH Cloud

Script ppp ip-down

8 réponses
Avatar
Julien Valroff
--=-Wt1MFvCTdxQDlPmvckW+
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable

Bonsoir,

Je perds de temps =E0 autre la synchronisation de ma ligne ADSL, et dans
ce cas, il me faut soit d=E9brancher la prise t=E9l=E9phonique, soit
red=E9marrer le modem pour pouvoir me re-connecter.

J'utilise un modem en mode bridge (le firmware est =E0 jour), et j'ai une
passerelle qui g=E8re la connexion, et je souhaiterais pouvoir red=E9marrer
mon modem (auquel j'acc=E8de par telnet) lorsque la ligne n'est plus
synchronis=E9e.

Pour cela, j'ai cr=E9=E9 un script dans /etc/ppp/ip-down.d/ qui va lire les
derni=E8res entr=E9es du log de ppp (/var/log/ppp.log dans mon cas) et
chercher si l'erreur sp=E9cifique =E0 mon probl=E8me est pr=E9sente.

Le souci, c'est que ces lignes ne sont pas pr=E9sentes au moment de la
d=E9connexion, mais juste apr=E8s, lors de la tentative de reconnexion.
Il me faut donc utiliser un temporisateur pour que cela fonctionne, mais
je ne trouve pas =E7a tr=E8s propre, et cela bloque les autres scripts en
attendant...

Sachant que les scripts ip-up sont lanc=E9s *apr=E8s* l'=E9tablissement de =
la
connexion, =E7a ne m'aide pas.

Voi le script actuel :
#!/bin/sh
sleep 45
tail /var/log/ppp.log | grep '^.*Modem hangup$' >/dev/null 2>&1
if [ $? -eq 0 ]; then
# je red=E9marre le modem
fi

Existe-t-il une option de ppp permettant ce genre de choses ?
J'ai pass=E9 en revue les diff=E9rentes options lcp-* et ipcp-* mais rien n=
e
convient.

Avez-vous une id=E9e ?

Merci par avance
Julien

--=-Wt1MFvCTdxQDlPmvckW+
Content-Type: application/pgp-signature; name=signature.asc
Content-Description: This is a digitally signed message part

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.1 (GNU/Linux)

iD8DBQBDJdMAaxDuRdoK7O0RAvpyAJ9zYcw6HoA2RNsJeeiqsKtnobpoWwCcCmNQ
ZPgQoNPTEumbaCQqwQpy4MQ=
=0Xlk
-----END PGP SIGNATURE-----

--=-Wt1MFvCTdxQDlPmvckW+--



--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to debian-user-french-REQUEST@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org

8 réponses

Avatar
Pascal
Salut,

Julien Valroff a écrit :

Je perds de temps à autre la synchronisation de ma ligne ADSL, et dans
ce cas, il me faut soit débrancher la prise téléphonique, soit
redémarrer le modem pour pouvoir me re-connecter.

J'utilise un modem en mode bridge (le firmware est à jour), et j'ai une
passerelle qui gère la connexion, et je souhaiterais pouvoir redémarrer
mon modem (auquel j'accède par telnet) lorsque la ligne n'est plus
synchronisée.

Pour cela, j'ai créé un script dans /etc/ppp/ip-down.d/ qui va lire les
dernières entrées du log de ppp (/var/log/ppp.log dans mon cas) et
chercher si l'erreur spécifique à mon problème est présente.

Le souci, c'est que ces lignes ne sont pas présentes au moment de la
déconnexion, mais juste après, lors de la tentative de reconnexion.
Il me faut donc utiliser un temporisateur pour que cela fonctionne, mais
je ne trouve pas ça très propre, et cela bloque les autres scripts en
attendant...



Quels autres scripts ? Ceux dans ip-down.d ?
Dans ce cas il suffit de nommer le script de sorte qu'il soit exécuté en
dernier, genre "999resetmodem".

J'ai utilisé ip-down pour faire quelque chose du même genre
(temporisation + examen du log), ça marchait mais c'est vrai que ce
n'est pas terrible. Dans mon cas c'était plus facile parce que le
message d'erreur se produisait à la déconnexion. Ma passerelle pouvant
gérer plusieurs liaisons PPP simultanées (ADSL + des VPN PPTP), j'avais
inclus des vérifications sur les variables $PPPD_PID et $PPP_IPPARAM :

if [ $PPP_IPPARAM == "<fai>" ]
then
sleep 5s
if grep -qi "pppd[${PPPD_PID}].*<chaine a chercher>" /var/log/<log>
then
# action
fi
fi


Sachant que les scripts ip-up sont lancés *après* l'établissement de la
connexion, ça ne m'aide pas.



Non, effectivement ces scripts ne sont pas faits pour ça.
Détail : les scripts ip-up ne sont pas exécutés quand la liaison PPP est
établie mais seulement après le succès de la négociation IPCP,
c'est-à-dire une fois IP établi sur la liaison. Idem pour les scripts
ipv6-up et la négociation IPV6CP. Liaison PPP établie mais pas d'IP =>
pas d'exécution de ip-up.

Existe-t-il une option de ppp permettant ce genre de choses ?



As-tu regardé du côté des options init, connect et disconnect de pppd ?


--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Jacques L'helgoualc'h
a écrit, mardi 13 septembre 2005, à 01:10 :
Salut,



Salut,

[...]
Quels autres scripts ? Ceux dans ip-down.d ?
Dans ce cas il suffit de nommer le script de sorte qu'il soit exécuté en
dernier, genre "999resetmodem".



Si 000qqch précède bien 00alpha, 999resetmodem ne suit pas 99zeta ...
--
Jacques L'helgoualc'h


--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Pascal
Jacques L'helgoualc'h a écrit :
a écrit, mardi 13 septembre 2005, à 01:10 :

[...]
Quels autres scripts ? Ceux dans ip-down.d ?
Dans ce cas il suffit de nommer le script de sorte qu'il soit exécuté en
dernier, genre "999resetmodem".



Si 000qqch précède bien 00alpha, 999resetmodem ne suit pas 99zeta ...



Ouais, tu n'as pas tort. Je me suis inspiré des 000xxx dans ip-up.d,
mais ça ne marche pas dans l'autre sens. :-(
Yaka l'appeler "zzzresetmodem" alors :-D


--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Julien Valroff
Le mardi 13 septembre 2005 à 01:10 +0200, a écrit :
Salut,

Julien Valroff a écrit :
>


[...]
>
> Pour cela, j'ai créé un script dans /etc/ppp/ip-down.d/ qui va lire les
> dernières entrées du log de ppp (/var/log/ppp.log dans mon cas) et
> chercher si l'erreur spécifique à mon problème est présente.
>
> Le souci, c'est que ces lignes ne sont pas présentes au moment de la
> déconnexion, mais juste après, lors de la tentative de reconnexion.
> Il me faut donc utiliser un temporisateur pour que cela fonctionne, mais
> je ne trouve pas ça très propre, et cela bloque les autres scripts en
> attendant...

Quels autres scripts ? Ceux dans ip-down.d ?
Dans ce cas il suffit de nommer le script de sorte qu'il soit exécuté en
dernier, genre "999resetmodem".


Les scripts dans ip-up.d sont également concernés, donc le simple fait
de renommer celui-ci ne résoud pas le problème.
J'ai un script dans ip-up.d qui met permet de connaitre l'heure de la
dernière connexion, et il n'est pas exécuté si je laisse mon
temporisateur dans le script ip-down.d. Je ne comprends pas vraiment
pourquoi.

Je dois mettre un temporisateur relativement long (pour le moment, je
mets un 'sleep 45', mais j'espère pouvoir réduire par la suite) :
l'erreur n'apparait que lors de la tentative de connexion suivante, qui
échoue avec, entre autres, un 'Modem hangup'.

J'ai utilisé ip-down pour faire quelque chose du même genre
(temporisation + examen du log), ça marchait mais c'est vrai que ce
n'est pas terrible. Dans mon cas c'était plus facile parce que le
message d'erreur se produisait à la déconnexion. Ma passerelle pouvant
gérer plusieurs liaisons PPP simultanées (ADSL + des VPN PPTP), j'avais
inclus des vérifications sur les variables $PPPD_PID et $PPP_IPPARAM :

if [ $PPP_IPPARAM == "<fai>" ]
then
sleep 5s
if grep -qi "pppd[${PPPD_PID}].*<chaine a chercher>" /var/log/<log>
then
# action
fi
fi



C'est exactement cela... la vérification de la connexion en moins, ma
passerelle ne gère que ma connexion ADSL.

Merci pour vos réponses.
Julien



--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Leopold BAILLY
Julien Valroff writes:

Le mardi 13 septembre 2005 à 01:10 +0200, a écrit :
Salut,

Julien Valroff a écrit :
>


[...]
>
> Pour cela, j'ai créé un script dans /etc/ppp/ip-down.d/ qui va lire les
> dernières entrées du log de ppp (/var/log/ppp.log dans mon cas) et
> chercher si l'erreur spécifique à mon problème est présente.
>
> Le souci, c'est que ces lignes ne sont pas présentes au moment de la
> déconnexion, mais juste après, lors de la tentative de reconnexion.
> Il me faut donc utiliser un temporisateur pour que cela fonctionne, mais
> je ne trouve pas ça très propre, et cela bloque les autres scripts en
> attendant...





[...]

Je dois mettre un temporisateur relativement long (pour le moment, je
mets un 'sleep 45', mais j'espère pouvoir réduire par la suite) :
l'erreur n'apparait que lors de la tentative de connexion suivante, qui
échoue avec, entre autres, un 'Modem hangup'.



"sleep" ne rend pas la main mais "at" oui.

Tu peux mettre dans ip-down.d un script qui fait :

echo "/n/importe/ou/traitement_de_l_erreur.sh" | at now + 5secondes

Comme ça pppd se termine rapidement et écris éventuellement le message d'erreur
dans les logs.

Le script traitement_de_l_erreur.sh se déclenche plus tard et décide ou non de
relancer la connexion.


Léo.


--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Julien Valroff
Le vendredi 16 septembre 2005 à 00:16 +0200, Leopold BAILLY a écrit :
Julien Valroff writes:

> Le mardi 13 septembre 2005 à 01:10 +0200, a écrit :


[...]
> Je dois mettre un temporisateur relativement long (pour le moment, je
> mets un 'sleep 45', mais j'espère pouvoir réduire par la suite) :
> l'erreur n'apparait que lors de la tentative de connexion suivante, qui
> échoue avec, entre autres, un 'Modem hangup'.

"sleep" ne rend pas la main mais "at" oui.

Tu peux mettre dans ip-down.d un script qui fait :

echo "/n/importe/ou/traitement_de_l_erreur.sh" | at now + 5secondes

Comme ça pppd se termine rapidement et écris éventuellement le message d'erreur
dans les logs.

Le script traitement_de_l_erreur.sh se déclenche plus tard et décide ou non de
relancer la connexion.



En effet, c'est peut-être une solution que je vais m'empresser
d'essayer...
Merci pour le conseil !
Je vous tiens au courant lors de la prochaine déconnexion.

Julien



--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Julien Valroff
Le samedi 17 septembre 2005 à 16:19 +0200, Julien Valroff a écrit :
Le vendredi 16 septembre 2005 à 00:16 +0200, Leopold BAILLY a écrit :
> Julien Valroff writes:
>
> > Le mardi 13 septembre 2005 à 01:10 +0200, a écrit :
[...]
> > Je dois mettre un temporisateur relativement long (pour le moment, je
> > mets un 'sleep 45', mais j'espère pouvoir réduire par la suite) :
> > l'erreur n'apparait que lors de la tentative de connexion suivante, qui
> > échoue avec, entre autres, un 'Modem hangup'.
>
> "sleep" ne rend pas la main mais "at" oui.
>
> Tu peux mettre dans ip-down.d un script qui fait :
>
> echo "/n/importe/ou/traitement_de_l_erreur.sh" | at now + 5secondes
>
> Comme ça pppd se termine rapidement et écris éventuellement le message d'erreur
> dans les logs.
>
> Le script traitement_de_l_erreur.sh se déclenche plus tard et décide ou non de
> relancer la connexion.

En effet, c'est peut-être une solution que je vais m'empresser
d'essayer...
Merci pour le conseil !
Je vous tiens au courant lors de la prochaine déconnexion.


J'ai entre temps eu droit à plusieurs déconnexions de ce type, et tout
fonctionne correctement.

ip-down.d :
at -f /root/checkModemHangup.sh now +1minute

checkModemHangup.sh :
tail /var/log/ppp.log | grep '^.*Modem hangup$' >/dev/null 2>&1
if [ $? -eq 0 ]; then
(
echo 'open 192.168.1.23'
sleep 1
echo 'root'
sleep 1
echo 'mot_de_passe'
sleep 1
echo '/sbin/reboot'
sleep 1
) | telnet | mail root -s "Modem was resetted"
fi

Et voilà ;-)

Merci à tous pour votr aide.
Julien



--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Julien Valroff
Le samedi 17 septembre 2005 à 16:19 +0200, Julien Valroff a écrit :
Le vendredi 16 septembre 2005 à 00:16 +0200, Leopold BAILLY a écrit :
> Julien Valroff writes:
>
> > Le mardi 13 septembre 2005 à 01:10 +0200, a écrit :
[...]
> > Je dois mettre un temporisateur relativement long (pour le moment, je
> > mets un 'sleep 45', mais j'espère pouvoir réduire par la suite) :
> > l'erreur n'apparait que lors de la tentative de connexion suivante, qui
> > échoue avec, entre autres, un 'Modem hangup'.
>
> "sleep" ne rend pas la main mais "at" oui.
>
> Tu peux mettre dans ip-down.d un script qui fait :
>
> echo "/n/importe/ou/traitement_de_l_erreur.sh" | at now + 5secondes
>
> Comme ça pppd se termine rapidement et écris éventuellement le message d'erreur
> dans les logs.
>
> Le script traitement_de_l_erreur.sh se déclenche plus tard et décide ou non de
> relancer la connexion.

En effet, c'est peut-être une solution que je vais m'empresser
d'essayer...
Merci pour le conseil !
Je vous tiens au courant lors de la prochaine déconnexion.


J'ai entre temps eu droit à plusieurs déconnexions de ce type, et tout
fonctionne correctement.

ip-down.d :
at -f /root/checkModemHangup.sh now +1minute

checkModemHangup.sh :
tail /var/log/ppp.log | grep '^.*Modem hangup$' >/dev/null 2>&1
if [ $? -eq 0 ]; then
(
echo 'open 192.168.1.23'
sleep 1
echo 'root'
sleep 1
echo 'mot_de_passe'
sleep 1
echo '/sbin/reboot'
sleep 1
) | telnet | mail root -s "Modem was resetted"
fi

Et voilà ;-)

Merci à tous pour votr aide.
Julien



--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact