regarde les logs de ppp, (/var/log/syslog), a chaque fois il te donne la quantité de minutes consommées.
Après, il te suffit de parser ce fichier régulièrement, et une fois avant minuit (heure ou les logs tournent), pour pouvoir faire le compte.
Exemple de comptage:
Attention ce code n’est pas complet, il ne détectera JAMAIS un double comptage d’une ligne
Pour se faire, on peut imaginer un système qui converti chaque temps fourni par syslog en temps UNIX en seconde, et ensuite ne prendre en compte que les timestamp supérieur au dernier déja parsé.
Bonne chance,
#!/bin/sh
## Attention a bien définir PATH.
export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
OLDMONTH=/var/tmp/lastmonth
CUMUL=/var/tmp/cumul
IFS="
"
[ -f $OLDMONTH ] || echo -n "Inv" >$OLDMONTH
[ -f $CUMUL ] || echo -n "0" >$CUMUL
for connect in `fgrep "Connect time" /var/log/syslog`; do
## Récupère le mois
cumul=$(cat $CUMUL)
month=$(echo $connect | awk '{print $1}')
if [ "$month" != "`cat $OLDMONTH`" ]; then
echo "Remise a zero du compteur." ## A commenter pour la production
echo -n "0" > $CUMUL
echo -n $month > $OLDMONTH
fi
duree=$(echo "$connect" | sed -e 's/.*Connect time \([0-9]*\).*/\1/')
echo $duree
cumul=$(( $cumul + $duree ))
echo -n $cumul > $CUMUL
done