| 1 | #!/usr/bin/perl |
|---|
| 2 | |
|---|
| 3 | #Capture the content of logdb file |
|---|
| 4 | my %logdb; |
|---|
| 5 | $rs = open (LOGDB,'+<',"/var/log/ispcp/logdb"); |
|---|
| 6 | while (<LOGDB>) { |
|---|
| 7 | my ($logdb_key,$logdb_val) = split(' ',$_); |
|---|
| 8 | $logdb{$logdb_key} = $logdb_val; |
|---|
| 9 | } |
|---|
| 10 | |
|---|
| 11 | |
|---|
| 12 | #We are only taking care of http entries this time |
|---|
| 13 | delete $logdb{"mail.log"}; |
|---|
| 14 | delete $logdb{"proftpd/ftp_traff.log"}; |
|---|
| 15 | |
|---|
| 16 | # for each element on the hash compare the real position with the logdb entry |
|---|
| 17 | while ( ($k,$v) = each %logdb ) { |
|---|
| 18 | my $pos = 0; |
|---|
| 19 | my $file = "/var/log/apache2/" . $k; |
|---|
| 20 | $rs = open(LOGFILE,'<',$file); |
|---|
| 21 | seek(LOGFILE,0,0); |
|---|
| 22 | while (<LOGFILE>) { |
|---|
| 23 | $pos = tell(LOGFILE) if (eof(LOGFILE)); |
|---|
| 24 | } |
|---|
| 25 | close(LOGFILE); |
|---|
| 26 | if ($v > $pos) |
|---|
| 27 | { |
|---|
| 28 | $v = $pos; |
|---|
| 29 | } |
|---|
| 30 | $logdb{$k}=$v; |
|---|
| 31 | } |
|---|
| 32 | close(LOGDB); |
|---|
| 33 | |
|---|
| 34 | my $new_file = "/tmp/new_logdb"; |
|---|
| 35 | system ("cat /var/log/ispcp/logdb | grep mail.log > $new_file"); |
|---|
| 36 | system ("cat /var/log/ispcp/logdb | grep proftpd >> $new_file"); |
|---|
| 37 | $rs = open (NEWLOGDB,'>>',$new_file); |
|---|
| 38 | foreach my $logdb_key (keys %logdb) { |
|---|
| 39 | print NEWLOGDB "$logdb_key $logdb{$logdb_key}\n"; |
|---|
| 40 | } |
|---|
| 41 | close (NEWLOGDB); |
|---|
| 42 | |
|---|
| 43 | system ("cp /var/log/ispcp/logdb /tmp/logdb.old"); |
|---|
| 44 | system ("cp /tmp/new_logdb /var/log/ispcp/logdb"); |
|---|