Source:MailLog
Jump to navigation
Jump to search
Source code of the hook script for sending logs by email. Store this code in $FAI/hooks/savelog.DEFAULT file.
#!/usr/bin/perl
# BEGIN LICENCE BLOCK
#
# Copyright (C) 2004 Michal Svamberg <svamberg@civ.zcu.cz>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
#
# END LICENCE BLOCK
use strict;
use Mail::Sender;
# ---------------------------------- START:CONF ---
my @SEND_TO = (
'your@mail.address',
'other@email.address'
);
my $SEND_FROM = 'fai@foo.bar';
my $SMTP_SERVER = "smtp.foo.bar";
# ---------------------------------- END:CONF ---
# ---------------------------------------------------------------- send_mail ---
sub send_mail {
my $text = "this message sends via hooks/savelog.DEFAULT. See you attachments.";
my $admin;
my $attachment;
my $filename;
foreach $admin (@SEND_TO) {
# make mail
my $sender = new Mail::Sender({
# debug => "/tmp/smtp.txt",
smtp => '147.228.57.20',
from => $SEND_FROM
});
$sender->OpenMultipart({
to => $admin,
subject => "FAI: " .`hostname` ." ($ENV{FAI_ACTION}, $ENV{FAI_RUNDATE})",
});
# body of mail
$sender->Body({ msg => "$text\n" });
# add logs as attachment
foreach $attachment (<$ENV{LOGDIR}/*>) {
$filename = `basename $attachment`;
chomp $filename;
$sender->Attach({
ctype => "text/plain",
encoding => 'none',
file => "$attachment",
disposition => "attachment; filename=\"$filename\"",
description => "$filename"
});
}
# send mail
$sender->Close or die "Close failed! $Mail::Sender::Error\n";
}
return 0;
}
# ==============================================================================
print "Send log files via SMTP to " .(join ', ', @SEND_TO) ."\n";
# send emails
send_mail();
exit 0;