OVH Cloud OVH Cloud

Durée de connexion pppd en temps réel

5 réponses
Avatar
Julien Valroff
Bonjour !

Je cherche =E0 r=E9cup=E9rer la dur=E9e qui s'est =E9coul=E9e depuis la der=
ni=E8re=20
reconnexion de pppd (en temps r=E9el).
De nombreuses applications le font (celle qui me vient =E0 l'esprit est kpp=
p=20
mais d'autres le font aussi).

Quelques infos sur ma config : je suis connect=E9 =E0 l'adsl en ppoe, et ut=
ilise=20
l'option persist de pppd.

Le but est d'afficher ce temps sur une page web, me permettant de savoir si=
=20
j'ai eu des probl=E8mes de connexion. Je peux donc r=E9cup=E9rer cette dur=
=E9e quand=20
cette page est appel=E9e (il ne s'agit donc pas vraiment de temps r=E9el)...

Quelqu'un a-t-il une id=E9e ?

Merci par avance pour votre aide !

=E0++
Julien

5 réponses

Avatar
Jacques L'helgoualc'h
Julien Valroff a écrit, dimanche 12 décembre 2004, à 11:21 :
Bonjour !



bonjour.

Je cherche à récupérer la durée qui s'est écoulée depuis la dernière
reconnexion de pppd (en temps réel).


[...]
Quelqu'un a-t-il une idée ?



awk '/local +IP address/{ligne=$1" "$2" "$3" "$NF"}
END{print ligne}' < /var/log/ppp.log

pour commencer ?

Merci par avance pour votre aide !



de rien,
--
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
Sylvain Sauvage
Sun, 12 Dec 2004 11:21:48 +0100, Julien Valroff a écrit :
Bonjour !

Je cherche à récupérer la durée qui s'est écoulée depuis la d ernière
reconnexion de pppd (en temps réel).

Quelques infos sur ma config : je suis connecté à l'adsl en ppoe, et
utilise l'option persist de pppd.

Le but est d'afficher ce temps sur une page web, me permettant de savoir
si j'ai eu des problèmes de connexion. Je peux donc récupérer cette
durée quand cette page est appelée (il ne s'agit donc pas vraiment de
temps réel)...

Quelqu'un a-t-il une idée ?



Tu peux ajouter un script dans /etc/ppp/ip-up.d pour noter la date de
connexion dans un fichier.
Voir 'man date' pour un format facile à manipuler.

Note : le nom du script ne doit comporter que des lettres, des chiffres et
des tirets (mais pas au début). Pas de point. Vérifier dans 'man
run-parts'.

--
Sylvain Sauvage
Avatar
Julien Valroff
--nextPart183829047.7OtMDAlzQt
Content-Type: text/plain;
charset="iso-8859-15"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline

Le Dimanche 12 Décembre 2004 14:55, Sylvain Sauvage a écrit :
Sun, 12 Dec 2004 11:21:48 +0100, Julien Valroff a écrit :
> Bonjour !
>
> Je cherche à récupérer la durée qui s'est écoulée depuis la dernière
> reconnexion de pppd (en temps réel).
>
> Quelques infos sur ma config : je suis connecté à l'adsl en ppoe, et
> utilise l'option persist de pppd.
>
> Le but est d'afficher ce temps sur une page web, me permettant de savoir
> si j'ai eu des problèmes de connexion. Je peux donc récupérer cet te
> durée quand cette page est appelée (il ne s'agit donc pas vraiment de
> temps réel)...
>
> Quelqu'un a-t-il une idée ?

Tu peux ajouter un script dans /etc/ppp/ip-up.d pour noter la date de
connexion dans un fichier.
Voir 'man date' pour un format facile à manipuler.

Note : le nom du script ne doit comporter que des lettres, des chiffres et
des tirets (mais pas au début). Pas de point. Vérifier dans 'man
run-parts'.



Bonsoir, et merci pour vos réponses.

Je pensais qu'il existait une solution "toute faite", mais malgré mes
recherches, je n'ai rien trouvé de mieux que d'utiliser les scripts ip-up .d.

Pour les archives, voilà ce que j'ai utilisé :

le script à placer dans /etc/ppp/ip-up.d/ :
========================= ====
#!/bin/sh
/bin/date +%s > /tmp/adsl_status
/bin/echo $ip >> /tmp/adsl_status
========================= ====

Celui dans /etc/ppp/ip-down.d/ (me permet de savoir que je ne suis pas
connecté, je supprime tout simplement le fichier) :
========================= ====
#!/bin/sh
/bin/rm /tmp/adsl_status
========================= ====

Le script qui me permet d'afficher l'information :
========================= ====
<?php

$cache = @file("/tmp/adsl_status");

function DateDiff($tfirst, $tsecond) {
//returns an array with numeric values for in an array measuring days,
hours, minutes & seconds
$ret=array();
$totalsec=$tsecond-$tfirst;
$ret['days']=floor(($totalsec/86400));
$totalsec=$totalsec % 86400;
$ret['hours']=floor(($totalsec/3600));
$totalsec=$totalsec % 3600;
$ret['minutes']=floor(($totalsec/60));
$ret['seconds']=$totalsec % 60;
return $ret;
}

if ($cache == '') {
echo "<center><h2>";
echo "<font color="red">Connexion ADSL coup&eacute;e</font>";
echo "</h2></center>";
}
else {
$date[] = DateDiff($cache[0],time());

echo "<center><h4>";
echo "Connecté depuis : <font color="red">";

echo $date[0][days]."j ";
echo $date[0][hours]."h ";
echo $date[0][minutes]."m ";
echo $date[0][seconds]."s";

echo "</font><br>";
echo "Adresse IP: $cache[1]";

echo "</h4></center>";
}
?>
========================= ====

Je n'ai pas réussi à le faire en perl, j'ai donc choisi le php que je m aitrise
bien mieux. Si quelqu'un a une proposition... car le perl a l'avantage d' être
également installer sur mon firewall (et j'affiche l'info sur mon serveur
web).

Quant à la solution proposée par Jacques L'helgoualc'h, à savoir util iser awk
pour aller cherche l'heure de la dernière connexion dans les logs, je n'a i
pas réussi à la mettre en place, en particulier à cause de logrotate, qui
fait tourner les journaux, et si la dernière connexion a eu lieu avant la
rotation journalière, je ne peux plus retrouver l'info (à moins de cher cher
dans toutes les archives, et ça commence à faire une grosse moulinette pour
un tout petit poisson).

Merci encore pour vos propositions !

@+
Julien

--nextPart183829047.7OtMDAlzQt
Content-Type: application/pgp-signature

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

iD8DBQBBvdJfaxDuRdoK7O0RAi2ZAJ9rRI7FUV05xQ67dPt+/Ih7s51FnwCePDZQ
aP8HPJKbGkj0vWPO70NHaxo =Vgru
-----END PGP SIGNATURE-----

--nextPart183829047.7OtMDAlzQt--


--
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
Salut,

En effet, je n'ai pas mis mon script dans son ensemble... comme dit, je me
sers des valeurs récupérés pour un affichage sur mon serveur web (je passe le
fichier par scp et le lit ensuite en php - j'aimerais d'ailleurs faire de
même en perl si tu as une idée !).

En fait, je récupère l'ip grâce au paramètre passé par pppd lors de
l'exécution des scripts dans ip-[up,down].d par run-parts

Extrait de /etc/ppp/ip-up:

# This script is called with the following arguments:
# Arg Name Example
# $1 Interface name ppp0
# $2 The tty ttyS1
# $3 The link speed 38400
# $4 Local IP number 12.34.56.78
# $5 Peer IP number 12.34.56.99
# $6 Optional ``ipparam'' value foo

Tu peux donc utiliser directement $PPP_LOCAL dans ton script !

Je mets la liste en copie pour corriger mon oubli.

@++
Julien

Le Lundi 13 Décembre 2004 21:01, vous avez écrit :
Bonjour,

Je suis très intéressé par cette solution, et je l'ai mise chez moi :)

Par contre, il y a un point que je ne comprends pas.

On Mon, Dec 13, 2004 at 06:33:17PM +0100, Julien Valroff wrote:
>le script à placer dans /etc/ppp/ip-up.d/ :
>======================== =====
>#!/bin/sh
>/bin/date +%s > /tmp/adsl_status
>/bin/echo $ip >> /tmp/adsl_status
>======================== =====

Comment récupéres-tu $ip ici ?
Est-ce pppd qui initialise $ip à la bonne valeur ?
Ça n'a pas l'air d'être le cas chez moi... Enfin, je peux toujours
parser ifconfig pour récupérer l'adresse IP, mais c'est un peu lourd.


Merci !

Jocelyn


Avatar
Jacques L'helgoualc'h
Julien Valroff a écrit, lundi 13 décembre 2004, à 18:33 :
[...]
Quant à la solution proposée par Jacques L'helgoualc'h, à savoir utiliser awk
pour aller cherche l'heure de la dernière connexion dans les logs, je n'ai
pas réussi à la mettre en place, en particulier à cause de logrotate, qui
fait tourner les journaux, et si la dernière connexion a eu lieu avant la
rotation journalière, je ne peux plus retrouver l'info (à moins de chercher
dans toutes les archives, et ça commence à faire une grosse moulinette pour
un tout petit poisson).



Pas si grosse :)

{
for log in $(ls -1tr /var/log/ppp.log*)
do
case $log in
*.gz)
zcat $log;;
*)
cat $log;;
esac
done
} | awk '/local +IP address/'

donnera la liste des dates et IP de connexion.

L'autre solution est meilleure quand on demande souvent la même
information.
--
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