-
Notifications
You must be signed in to change notification settings - Fork 8
/
tailslash
executable file
·56 lines (46 loc) · 1.24 KB
/
tailslash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#!/usr/bin/perl -w
use strict;
use lib '../';
use vars '%I';
use Slash;
*I = getSlashConf();
if ($ARGV[0] eq "today") {
my($c) = sqlSelectMany("count(*),date_format(ts,\"%d_%H\") as h,
date_format(ts,\"%d\") as d",
"accesslog", "1=1",
# "to_days(now()) = to_days(ts)",
"GROUP BY H ORDER BY H ASC");
my($total, $today);
while (my($cnt, $h, $d) = $c->fetchrow) {
$total = 0 unless $today == $d;
$today = $d;
$total += $cnt;
print "| $h | $cnt \t| $total \t| " . sprintf("%.2f", $cnt/3600) . "\n";
}
print "$total pages served so far today.\n";
exit;
}
my($id) = sqlSelect("max(id)", "accesslog");
my $total;
my $starttime = time;
while (1) {
sleep 3;
my $c = sqlSelectMany("host_addr,uid,op,dat,
date_format(ts,\"\%H:\%i\") as ts,id",
"accesslog","id > $id",
"ORDER BY ts DESC");
my $sec = time - $starttime;
$total += $c->rows;
print "$sec\t| " . $c->rows . "\t| " . sprintf("%.2f", $total/$sec) . "\n"
if $ARGV[0] eq "sec";
while (my $U = $c->fetchrow_hashref) {
my $w="$$U{ts} $$U{host_addr} ($$U{uid})";
$w .= "\t" if length $w < 24;
$w .= "\t$$U{op}";
$w .= "\t" if length($$U{op}) < 8;
$w .= "\t$$U{dat}\n";
print $w unless $ARGV[0] eq "sec";
$id = $$U{id} if $$U{id} > $id;
}
$c->finish();
}