Source:MailLog: Difference between revisions

From FAIWiki
Jump to navigation Jump to search
m (add licence block)
m (change email address)
 
(One intermediate revision by the same user not shown)
Line 1: Line 1:
Source file of hooks for [[Hook:MailLog|sending logs]] by email. You store this code to $FAI/hooks/savelog.DEFAULT file.
Source code of the hook script for [[Hook:MailLog|sending logs]] by email. Store this code in $FAI/hooks/savelog.DEFAULT file.


<pre>
<pre>
Line 28: Line 28:
# ---------------------------------- START:CONF ---
# ---------------------------------- START:CONF ---
my @SEND_TO = (
my @SEND_TO = (
         'svamberg@civ.zcu.cz',
         'your@mail.address',
        'obal@civ.zcu.cz',
         'other@email.address'
         'bodik@civ.zcu.cz',
        'steve@students.zcu.cz'
);
);
my $SEND_FROM = 'fai@fais1.civ.zcu.cz';
my $SEND_FROM = 'fai@foo.bar';
my $SMTP_SERVER = "smtp.zcu.cz";
my $SMTP_SERVER = "smtp.foo.bar";


# ---------------------------------- END:CONF ---
# ---------------------------------- END:CONF ---

Latest revision as of 15:44, 5 December 2005

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;