Posted in bash onlinezeit aufzeichnen

Die beiden folgenden Scripte (.local) müssen, jeweils je nach System in die für das DIALING verantwortlichen Scripte, eingebunden werden. Auf meinem Ipcop mit ISDN-Einwahl sind hierfür z.B. in “/etc/ppp/ip-up” die Zeile: “system(‘/etc/ppp/ip-up.local’);” und in der “/etc/ppp/ip-down” die Zeile: “system(‘/etc/ppp/ip-down.local’);” anzufügen. ip-up.local und ip-down.local müssen im selben Verzeichnis liegen!

$ cat /etc/ppp/ip-up.local

#!/bin/sh
#
#= = = = = = = = = = = = = = = = = = = Online Startzeit aufzeichnen

echo -n “$(date +”%d.%m.%Y %H:%M:%S”) – ” >> /etc/ppp/online-time

$ cat /etc/ppp/ip-down.local

#!/bin/sh
#
#= = = = = = = = = = = = = = = = = = = Online Endzeit aufzeichnen

echo “$(date +”%d.%m.%Y %H:%M:%S”)” >> /etc/ppp/online-time

Hier nun das Auswertungsscript der Onlinezeit. Man beachte, dass die Auswertung Sekundengenau ist! Hat man einen Tarif der nach Minuten abgerechnet wird, hat mir die Erfahrung gezeigt, dass man die Anzahl der Verbindungen halbiert und auf die ausgegebenen Minuten hinzu addiert.

$ cat /bin/online

#!/bin/sh

case $* in
-d) PARAM=`/bin/date +%d.%m.%Y`;;
-m) PARAM=`/bin/date +%m.%Y`;;
-y) PARAM=`/bin/date +%Y`;;
-?|-h|–help) echo “calc [-d|-m|-y|]”
echo “Auswertung der Onlinezeit”
echo
exit;;
*) PARAM=”$*”;;
esac

grep “$PARAM” /etc/ppp/online-time | awk ‘BEGIN { total=0 }
NF == 5 {
n=split($1,d,”.”)
date1=(d[1]+d[2]*30+d[3]*365)
n=split($2,t,”:”)
time1=(t[1]*3600+t[2]*60+t[3])

n=split($4,d,”.”)
date2=(d[1]+d[2]*30+d[3]*365)
n=split($5,t,”:”)
time2=(t[1]*3600+t[2]*60+t[3])

time=(date2-date1)*3600*24+time2-time1
total=total+time
}
END
{
hours = total / 3600
minit = total / 60
print “n”
print “= = = = = = = = = = = = = = = = = = = ONLINE”
print “Verbindungen: “NR”"
print “Stunden: “hours”"
print “Minuten: “minit”"
print “= = = = = = = = = = = = = = = = = = = ”
}’



13 queries. 0.152