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

Re: Durée de connexion pppd en temps réel



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


Reply to: