#!/usr/bin/perl use strict; use warnings; require "sendmail.pl"; ## ### Definitionen ### my $mailbodyfile = 'D:\\admin\\perl\\temp\\SENDMAIL_BODYFILEZR1.txt'; my $export_dir = 'd:\\admin\\tablespace\\export'; 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 exporttrace { if (opendir STUNDENDIR, $export_dir) { foreach my $file (map "$export_dir\\$_", grep !/^\./, readdir EXPORTDIR) { my $mtime = (stat("$export_dir\\$file"))[9]; (my $sid) = $file =~ /\\([^\\_]+)_/; if (time() - $mtime > 24*60*60) { push @errors, "Export von $sid wurde noch nicht fertiggestellt.\n"; } if (open FILE, '<'.$file) { if (/Everything is Ok/) { push @errors, "Export von sid $sid OK.\n"; } else { push @errors, "beim Export von sid $sid traten fehler auf.\n"; } } close FILE; } else { push @errors, "File '$file' konnte nicht geöffnet werden\n"; } } closedir EXPORTDIR; } else { push @errors, "Verzeichnis '$export_dir' konnte nicht geöffnet werden\n"; } } ### Hauptteil ### &exporttrace; my $mail_subject; ### sendmail.pl setzt Win32::NodeName() davor! if (@errors) { $mail_subject .= "TESTING_FEHLER!!!"; } else { $mail_subject .= "TESTING_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;