Re: [maillist] Frage an Scripter (Teil II.)

Stefan Martig (martig@iamexwi.unibe.ch)
Thu, 08 Jul 1999 15:06:29 +0200 (MET DST)

--Boundary_(ID_t1T1qCtONnXSpzGcD7PLCw)
Content-type: TEXT/plain; charset=ISO-8859-1
Content-transfer-encoding: QUOTED-PRINTABLE
Content-MD5: fsMA5t/dOTalD8l3+KPHiQ==

hallo

> From: Holger Eilhard <holger@xpo.de>

> wer kann mir denn bei meinem Script helfen...
>=20
> Ich m=F6chte meine PPP-Logs, die im Format:
>=20
> ----------------------------------------
> ppp-start
> 17:57:25 07-07-99
> ppp-stop
> 17:57:48 07-07-99
> ----------------------------------------
>=20
die logdatei wuerde ich nicht so schreiben, sondern so:

up: 931435600 Thu Jul 8 14:06:40 MET DST 1999
dw: 931435608 Thu Jul 8 14:06:48 MET DST 1999
up: 931435610 Thu Jul 8 14:06:50 MET DST 1999
dw: 931435617 Thu Jul 8 14:06:57 MET DST 1999
up: 931435687 Thu Jul 8 14:08:07 MET DST 1999
dw: 931435694 Thu Jul 8 14:08:14 MET DST 1999
up: 931437450 Thu Jul 8 14:37:30 MET DST 1999
dw: 931437568 Thu Jul 8 14:39:28 MET DST 1999

up/dw zeit an, was passiert ist, die zahl dahinter sind die anzahl sekunden
seit 1.1.1970 und danach kommt ein datum in mehschenlesbarer form.
das machen die angehaengten scripts log.sh und stamp.pl, bei denen der pfad=
zu=20
perl/bash noch angepasst werden muss. in der ppp-up folgende zeile einfuege=
n:

...
/path/to/log.sh up >> /var/log/ppp/ppp.log
...

> sind... gerne die Zeiten addieren, damit ich am Ende des Monats eine
> =DCbersicht =FCber die Online Minuten habe...
>=20

am ende des monats die logdatei kontrollieren, dass darin:
- mit einem up begonnen wird
- die up und dw immer abwechseln
- am schluss ein dw steht.

dann calc.pl (mit anpassung des pfades zum logfile und zu perl) laufen lass=
en.=20
output:

magritte:~/perl $ calc.pl=20
total online time: 140 seconds, 0:2:20=20
total calls: 4

das ganze ist quick'n'dirty, funktioniert aber recht gut.
(wenn ich mal dazu komme, werde ich das ausbauen ... vielleicht. ;-)=20

ciao

martig stefan

--Boundary_(ID_t1T1qCtONnXSpzGcD7PLCw)
Content-type: APPLICATION/x-sun-shell-script; x-unix-mode=0744; name=log.sh
Content-description: log.sh
Content-disposition: ATTACHMENT; FILENAME=log.sh
Content-transfer-encoding: BASE64
Content-MD5: gKVUsMSV4mP0NlQcMN8xkA==

IyEvb3B0L2dudS9iaW4vYmFzaAoKZWNobyAtbiAiJDE6ICIgPj4gcHBwLmxv
ZwpzdGFtcC5wbCA+PiBwcHAubG9nCg==

--Boundary_(ID_t1T1qCtONnXSpzGcD7PLCw)
Content-type: TEXT/plain; x-unix-mode=0744; charset=us-ascii; name=stamp.pl
Content-description: stamp.pl
Content-disposition: ATTACHMENT; FILENAME=stamp.pl
Content-transfer-encoding: 7BIT
Content-MD5: 9aMnxMtlw2bxiToZbrnfpQ==

#!/opt/gnu/bin/perl

select((select(STDOUT), $| = 1)[0]); #auto-flushing

print time();
print " ";
system('date');

exit 0;

--Boundary_(ID_t1T1qCtONnXSpzGcD7PLCw)
Content-type: TEXT/plain; x-unix-mode=0744; charset=us-ascii; name=calc.pl
Content-description: calc.pl
Content-disposition: ATTACHMENT; FILENAME=calc.pl
Content-transfer-encoding: 7BIT
Content-MD5: MTNRMoHcdFsOTUo0N6ROdQ==

#!/opt/gnu/bin/perl

use POSIX;

$totalsecs = 0;
$totalcalls = 0;

open(LOGFILE, "</home/martig/perl/ppp.log") or die "fault: $!\n";
while ( <LOGFILE> ) {

($updown,$stamp,$date) = split(/ /,$_,3);

if ($updown eq "up:") {
$begin = $stamp;
$totalcalls++;
}
else {
$totalsecs += ($stamp - $begin);
}
}

close(LOGFILE);

$hours = ceil($totalsecs / 3600) -1;
$mins = ceil(($totalsecs%3600) / 60) -1;
$secs = $totalsecs % 60;
print "total online time: $totalsecs seconds, $hours:$mins:$secs \n";
print "total calls: $totalcalls\n";

exit 0;

--Boundary_(ID_t1T1qCtONnXSpzGcD7PLCw)--