Perl Rechnerausfall.pl

x-Reality

Mitglied
Hi,
Vielleicht kann mir ja einer helfen. Wenn meine offline Zeit des Server z.B. Sa 22 Uhr bis Mo 2 Uhr ist und ich will nun das Programm am Sa 10 Uhr starten bringt er mir keine Meldung das der Rechner online ist. Lasse ich es weiter laufen und warte bis 22 Uhr ist dann kommt auch die offline Meldung. Dann läuft das Programm 6 Tage ohne Fehler. Nun kommt aber wieder Sa 00:00:01 Uhr und nun kommt wieder bis Sa 22 Uhr keine Meldung. Gibt es da eine Möglichkeit diesen Fehler zu beheben?

--- Code ---

while(1) {
#!perl -w
my $sprache=$ARGV[1];
$AUSFALLZEITEN = "d:/ausfallzeiten.txt";
open (FILE, "< $AUSFALLZEITEN") or die "Unable to open $AUSFALLZEITEN! $!";
$line = <FILE>;
my $unverzeichniss = $ARGV[0];
my $erverzeichniss = ">$ARGV[0]";
my $endung = ".log";
my %weekdays;
if ($sprache eq "dt"){
print "if";
%weekdays = ("So" => 0, "Mo" => 1, "Di" => 2, "Mi" => 3, "Do" => 4, "Fr" => 5, "Sa" => 6); }
else {print "else";
%weekdays = ("Sun" => 0, "Mon" => 1, "Tue" => 2, "Wed" => 3, "Thu" => 4, "Fri" => 5, "Sat" => 6); }
# my %weekdays = ("Sun" => 0, "Mon" => 1, "Tue" => 2, "Wed" => 3, "Thu" => 4, "Fri" => 5, "Sat" => 6);
while($line = <FILE>){
($RECHNERNAME, $START_AUSFALLTAG, $START_AUSFALLZEIT, $ENDE_AUSFALLTAG, $ENDE_AUSFALLZEIT) = split(" ", $line);
# s="start", e="end", c="current", d="day", h="hour", m="minute"
my $time = localtime;
my $z = "$START_AUSFALLTAG $START_AUSFALLZEIT $ENDE_AUSFALLTAG $ENDE_AUSFALLZEIT";
my ($sd,$sh,$sm,$ed,$eh,$em) = split(/\s+|:/,$z);
my (undef, $cm, $ch, undef, undef, undef, $cd, undef, undef) = localtime;
print "Text", $sd, $ed, $cd,"\n";
$sd = $weekdays{$sd};
$ed = $weekdays{$ed};
# Wochenenden beruecksichtigen
if ($ed < $sd) { $ed += 7; if ($cd < $sd) {$cd += 7;} }
my $on = "Rechner online";
my $undatei = "$unverzeichniss$RECHNERNAME$endung";
if (($cd < $sd) || ($cd > $ed)){ print("\n", "$time $on", "\n"); unlink($undatei); }
$cd -= $sd;
$ed -= $sd;
$sd = 0;
# absolute Zeiten (in Minuten) ab 00:00 am Starttag ermitteln
# as, ae, ac stehen für "absolut"
my $as = $sh*60+$sm;
my $ae = $ed*60*24 + $eh*60 + $em;
my $ac = $cd*60*24 + $ch*60 + $cm;
my $off = "Rechner offline";
my $erdatei = "$erverzeichniss$RECHNERNAME$endung";
if (($ac >= $as) && ($ac <= $ae)) { print("\n", "$time $off", "\n"); open(LOG, "$erdatei") or die $!; print(LOG "$time $off"); close(LOG); }
print "Rechner=",$RECHNERNAME, "\n";
print "Starttag=",$START_AUSFALLTAG, "\n";
print "Startzeit=",$START_AUSFALLZEIT, "\n";
print "Endtag=",$ENDE_AUSFALLTAG, "\n";
print "Endzeit=",$ENDE_AUSFALLZEIT, "\n";
}
close (InFile);
sleep(300);
}

Oder hat jemand Verbesserungsvorschläge oder sonst irgennd was. Postet einfach!

Gruss x-Reality
 

Neue Beiträge

Zurück