#!/usr/bin/perl use strict; use warnings; require "sendmail.pl"; ## ### Definitionen ### my $mailbodyfile = 'D:\\admin\\perl\\temp\\SENDMAIL_BODYFILEZR1.txt'; my $stunden_dir = 'd:\\admin\\tablespace\\stundenreadings'; my @errors; ### ### Prozeduren ### sub send_mail { my ($subject_ref, $error_ref) = @_; ### sendmail.pl braucht den Body als File => erstellen open SENDMAILBODY, '>'.$mailbodyfile or die "Sendmail Bodyfile '$mailbodyfile' kann nicht erstellt werden! ($!)"; print SENDMAILBODY @$error_ref; close SENDMAILBODY; sendmail($$subject_ref, $mailbodyfile); return 0; } sub stundenreadings { if (opendir STUNDENDIR, $stunden_dir) { foreach my $file (map "$stunden_dir\\$_", grep !/^\./, readdir STUNDENDIR) { if (open FILE, '<'.$file) { my $ok = 0; while (my $file_row = ) { if ($file_row =~ /no rows selected/) { $ok = 1; last; } } if ($ok == 1) { next unless /\d+/; my ($sid) = $file=~/\\([^\\_]+)_/;; my ($code, $positionx, $positiony)= split ':' , $_; $code =~ s/ //g; $positionx =~ s/ *$//; $positiony =~ s/ *$//; #print (file $file)\n; if ($ok == 1) {push @errors, "Alle stundenreadings OK.\n"; } else { push @errors, "Maschine '$code' hat kein stundenreading im Betrieb '$sid' in der letzten stunde erhalten } close FILE; } else { push @errors, "File '$file' konnte nicht geöffnet werden\n"; } } closedir STUNDENDIR; } else { push @errors, "Verzeichnis '$stunden_dir' konnte nicht geöffnet werden\n"; } } } ### Hauptteil ### &stundenreadings; my $mail_subject; ### sendmail.pl setzt Win32::NodeName() davor! if (@errors) { $mail_subject .= "ZR1_Alertlog_Fehler!!!"; } else { $mail_subject .= "ZR1_Alertlog_OK"; } ### Informations E-Mail versenden &send_mail(\$mail_subject,\@errors); ### Programm mit Status 999 beenden, wenn ein Oracle-Fehler gefunden wurde exit 999 if @errors;