#!/usr/bin/perl use warnings; use strict; ############################################################################################################################################ # Skript loescht alle Systemmails die älter als 30 Tage sind durch Vergleich der Zeitstempel## # ############################################################################################ Package: libtimedate-perl use File::stat; use Time::localtime; use Date::Parse; use POSIX; ########################################################################################################################################## my $file_date_string = ctime(stat($file)->mtime); print "file $file updated at $file_date_string\n"; my $time_now = localtime; my $time_file_in_seconds = str2time($file_date_string); my $time_now_in_seconds = str2time($time_now); my $30_days_in_seconds = str2time(86400*30); my $back_30_days = str2time($time_now-(86400*30); ############################################################################################################################################# my $path ="/var/mail/"; my $log ="/home/uli/logs"; my $logfile =">$log/maillog.txt"; ############################################################################################################################################ opendir(DIR,$path) or die "ERROR: Cannot open directory: '$path': $!\n"; my @remove = readdir(DIR); close(DIR); ######################################################################################################################################### open(LOGFILE, $logfile) or die "Cannot open LOGFILE:$logfile $!\n"; ########################################################################################################################################## print "\t ### START FUNCTION CLEAN NOW! ### \n"; &CLEAN($path); print "#\n#\n# WRITE TO LOGFILE $logfile !\n#\n#\n"; open(LOGFILE, ">$logfile") or die "Cannot open LOGFILE:$logfile $!\n"; close LOGFILE; ################################################################################################################################ ########################################################################################################################################### sub CLEAN { foreach $file (@remove) { if($file_date_string > $back_30_days) { print LOGFILE "\t mail older than 30 days found \n"; unlink("$path/$file"); } # END if if(-d $file) { print LOGFILE "\t Is a directory start CLEAN recursively \n"; } # end if } # END foreach } # END REMOVE