Thread Änderungsdatum auslesen und funktion zurückliefern
(15 answers)
Opened by michaelf2050 at 2009-11-03 15:39
Entschuldige, solchen Code muss ich einfach umschreiben:
Code (perl): (dl
)
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 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 #!/usr/bin/perl use strict; use warnings; require "sendmail.pl"; # wofür brauchst du das? use Win32; my $SName = Win32::NodeName(); my $Pfad = "D:\\ADMIN\\rman\\logs"; # Anführungszeichen unnötig, stören sogar # einmal mit kleinem .log einmal mit großem .LOG? my @logfiles = qw/BACKUP_XX_ARCH.log BACKUP_XX_FULL.LOG/; my $bodyfile = "D:\\admin\\perl\\temp\\RBL.txt"; my $Fehler = 0; my $Fehler_Text=''; my @errors; foreach my $Log_Name (@logfiles) { if (-f $Log_Name) { # Da stimmt aber was nicht... # my $mtime = ($Writetime) = (stat(@logfiles))[8,9]; # wolltest du sowas schreiben? my ($atime, $mtime)=(stat("$Pfad\\$Log_Name"))[8,9]; # auch bei stat den vollständigen Pfad angeben. # Änderung am Logfile jünger als 24 Stunden if(time()-$mtime < 24*60*60) { # lexikalische Filehandles und Fehlermeldung # open lifert bei Erfolg true (1) zurück if(open(my $InFile,"$Pfad\\$Log_Name")) { # Trennzeichen für ReadLine auf undef setzen # => ganze Datei einlesen local $/=undef; my $Text=<$InFile>; close($InFile); # der match-Operator gibt beim auffinden "true" (1) zurück if ($Text =~ /ERROR/) { $Fehler = 1; $Fehler_Text .= $Text; push @errors, $Text; } else { $Fehler_Text .= "Check RMAN-Log OK!\n"; } } else { # in $! steht der Fehler beim open. push @errors, "Log $Log_Name konnte nicht geöffnet werden ($!)\n"; } } else { push @errors, "Log $Log_Name nicht von heute\n"; } } else { push @errors, "Log $Log_Name existiert nicht\n"; } } if (@errors) { open (FO,">$bodyfile"); print FO @errors."\n"; close(FO); print "$Fehler_Text"; sendmail("RMAN_Error",$bodyfile); exit 999; } else { sendmail("RMAN_OK",$bodyfile); } Ich wunder mich das der Code überhaupt funktioniert hat. |