Thread Änderungsdatum auslesen und funktion zurückliefern (15 answers)
Opened by michaelf2050 at 2009-11-03 15:39

guest wer
 2009-11-03 16:59
#127750 #127750
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.

View full thread Änderungsdatum auslesen und funktion zurückliefern