利用Purl脚本+MIME-LITE-TT-HTML模块 发送pfsense日志到指定邮件

最近在研究如何将pfsense日志通过邮件发送给指定人员,遇到不少问题,经过google,终于解决,现整理一下,以作备忘,希望可以帮助有需要的人。


调度脚本mytask-daily.sh内容(打包日志,并调用sendmail-with-MIME-LITE.sh,发送邮件):


#!/bin/bash

echo $(date +%Y-%m-%d" "%T)"  DailyTask Begin - [pfSense fw0 log send]"

Today=$(date +%Y%m%d);

cd /root
rm -f pfsense-log*.tar.gz

cd /var/log
tar -zcf /root/pfsense-log-${Today}.fw0.tar.gz *.log

cd /root

./sendmail-with-MIME-LITE.sh

echo $(date +%Y-%m-%d" "%T)"  Finished!"


其中sendmail-with-MIME-LITE.sh为邮件发送脚本,内容如下:

#!/usr/bin/perl

# Sending Email with Perl Best Practice
# see http://www.revsys.com/writings/perl/sending-email-with-perl.html
# see http://www.perlmonks.org/?node_id=819376
# see MIME types: http://help.dottoro.com/lapuadlp.php   (such as: .gz: application/gzip .png: image/png  .txt text/plain)

# step 1
# install perl module under pfSense

# 1. perl-5.10.1_1.tbz installed with system
# 2. setenv PACKAGESITE ftp://ftp-archive.freebsd.org/pub/FreeBSD-Archive/old-releases/amd64/8.1-RELEASE/packages/Latest/
# 3. pkg_add -r p5-MIME-Lite-HTML.tbz p5-MIME-Lite-TT-HTML.tbz p5-MIME-Base64.tbz p5-Net-SMTP-SSL.tbz p5-Net-SSLeay.tbz p5-IO-Socket-SSL.tbz p5-Authen-SASL.tbz

# step 2
# modify the smtp server, mail sender and receiver infomation

# step 3
# modify and copy the test.txt.tt and test.html.tt, modify the path to actual position

# step 4
# modify the attachment path and info

 use strict;
 use warnings;
 use MIME::Lite::TT::HTML;
 use Net::SMTP::SSL;
 use MIME::Base64;
 use Authen::SASL;
 use Time::localtime;
 
 my $tm = localtime;
 my $today=sprintf("%04d%02d%02d", $tm->year+1900, ($tm->mon)+1, $tm->mday);

 my %params;

 $params{first_name} = 'admin';
 $params{last_name}  = 'pfsense';
 $params{today}    = $today;

 my %options;
 $options{INCLUDE_PATH} = '/root';

 my $msg = MIME::Lite::TT::HTML->new(
            From        =>  'xxx@163.com',
            To          =>  'xxx@qq.com',
            Subject     =>  "pfsense log today-$today",
            Template    =>  {
                                text    =>  'test.txt.tt',
                                html    =>  'test.html.tt',
                            },
            TmplOptions =>  \%options,
            TmplParams  =>  \%params,
 );
 
 #$msg->attach(
 #  Type => 'image/png',
 #  Path => '/root/1.png',
 #  Id   => 'img1',
 #    );
 
 $msg->attach(
    Type => 'application/gzip',
    Path => "/root/pfsense-log-$today.fw0.tar.gz",
    Id   => 'log1',
    );


#这样需修改smtp服务器的信息,不同smtp 服务器的端口不一样,在登录对应邮箱后在帮助页面查询到


my $smtp_server='smtp.163.com';
my $port=465;
my $AuthUser='xxx@163.com';
my $AuthPass='password';
my $sender='xxx@163.com';
my $receiver='xxx@qq.com';

my $smtp;
$smtp = Net::SMTP::SSL->new($smtp_server, Port=>$port) or die "Can't connect";
$smtp->auth($AuthUser, $AuthPass) or die "Can't authenticate:".$smtp->message();
$smtp->mail($sender) or die "Error:".$smtp->message();
$smtp->to($receiver) or die "Error:".$smtp->message();
$smtp->data() or die "Error:".$smtp->message();
$smtp->datasend($msg->as_string) or die "Error:".$smtp->message();
$smtp->dataend() or die "Error:".$smtp->message();
$smtp->quit() or die "Error:".$smtp->message();

print("send mail to done! (FROM: $sender, TO: $receiver)\n");


需参考脚本开头的注释,完成 step1 perl模块及MIME-LITE-TT-HTML的安装:


 setenv PACKAGESITE ftp://ftp-archive.freebsd.org/pub/FreeBSD-Archive/old-releases/amd64/8.1-RELEASE/packages/Latest/
 pkg_add -r p5-MIME-Lite-HTML.tbz p5-MIME-Lite-TT-HTML.tbz p5-MIME-Base64.tbz p5-Net-SMTP-SSL.tbz p5-Net-SSLeay.tbz p5-IO-Socket-SSL.tbz p5-Authen-SASL.tbz


test.txt.tt 及 test.html.tt 为邮件内容模板,可自己定义,需要拷贝到脚本运行目录,


test.txt.tt 内容:

Hi [% first_name %],

 This is the log of pfsense today: [% today %].

 Thank you!


test.html.tt内容

<html>
 <body>

 <strong>Hi [% first_name %]</strong>,

 <p>
 This is the log of pfsense today: [% today %].
 </p>

 <p>
 Thank you!
 </p>
 </body>
 </html>


最后,修改上述两个脚本的权限为可执行,将调度脚本加入到定时计划任务里,定时执行:

#用指令添加:
crontab -e -u root

添加如下内容(触发时间自己定义):

30 3 * * * /bin/sh /root/mytask-daily.sh >> daily-task.log




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值