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 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'.

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 maitrise 
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 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).

Merci encore pour vos propositions !

@+
Julien

Attachment: pgptUDlEeud6M.pgp
Description: PGP signature

Répondre à