Hallo, ich habe auf einem System ein Perl-Script am Laufen, was jeweils einen Monat später die Logfiles mit Viren löscht.
Die Files mit den Viren sollen genau einen Monat lang noch vorhanden sein, bevor sie gelöscht werden.
Das lief bisher einwandfrei.
Nur jetzt im Januar wurden die Dezember-Files nicht gelöscht, sondern die tagesaktuellen, was natuerlich schlecht ist.
Anbei habe ich das Script mal drangehängt, vielleicht findet jemand den Fehler ...
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
#!/usr/bin/perl
use POSIX;
$archdiff = 30;
$archpath = "/var/spool/amavis/virusmails";
$logdatei = "/var/log/delamach.log";
$delete = "FALSE";
$count = 0;
$doy = strftime "%j", localtime;
$t = strftime "%Y.%m.%d. %H:%M:%S", localtime;
open (LOG, ">>$logdatei") ||
die ("Error: Datei delamach.log kann nicht geoeffnet werden.");
opendir(DIR, $archpath);
while($datei = readdir(DIR)) {
($check, $dummy) = split (/-/, $datei);
if ($check eq "virus") {
($dummy, $temp) = split (/virus-/, $datei);
($datum, $temp) = split (/-/, $temp);
$jj = substr($datum, 0, 4);
$mm = substr($datum, 4, 2);
$dd = substr($datum, 6, 2);
$testdoy = strftime "%j", "0", "0", "0", $dd, $mm-1, $jj-1900;
if ($doy < $archdiff+1) { $doy = $doy+(366-$archdiff); }
if ($testdoy < $doy-$archdiff) {
$count++;
if ($delete eq "FALSE") { $delete = "TRUE"; }
unlink("$archpath/$datei");
print LOG "$t --> $datei geloescht.\n";
print "$datei wurde geloescht.\n";
}
}
}
closedir(DIR);
if ($delete eq "FALSE") { print LOG "$t --> Keine Dateien zu loeschen.\n"; }
else { print LOG "$t --> $count Dateien wurden geloescht.\n"; }
close (LOG);
//Modedit GwendragonCode in Code-Tags gestellt\n\n
<!--EDIT|GwenDragon|1169461425-->