MHA0.58版本,send_report脚本,绝对无坑自用亲测。Email::Simple告警

本文介绍了一款用于MHA(Master High Availability)管理器的告警脚本,该脚本使用Perl语言编写,通过Email::Simple和Email::Sender模块发送邮件告警。文章详细解释了脚本的工作原理,包括如何设置SMTP服务器、邮件账户信息,以及如何通过命令行参数传递告警信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

自用告警脚本Email::Simple

MHA0.58版本根本不支持 Mail::Sender 告警

真是想不通,网上那么多 Mail:Sender 的发出来不是误人子弟吗。

#!/usr/bin/env perl

use strict;
use warnings FATAL => 'all';
use Email::Simple;
use Email::Sender::Simple qw(sendmail);
use Email::Sender::Transport::SMTP::TLS;
use Getopt::Long;

#new_master_host and new_slave_hosts are set only when recovering master succeeded
my ( $dead_master_host, $new_master_host, $new_slave_hosts, $subject, $body );
my $smtp='smtp.163.com';		#指定自己的邮箱smtp域名
my $mail_from='mail.shm.com';		#指定 公司邮件服务器
my $mail_user='shm1136265636@163.com';	#个人的邮箱
my $mail_pass='FCFXJUPZFTHHXCRK';	#个人邮箱的 SMTP 密码
my $mail_to='shm1136265636@163.com';	#个人的邮箱

GetOptions(
  'orig_master_host=s' => \$dead_master_host,
  'new_master_host=s'  => \$new_master_host,
  'new_slave_hosts=s'  => \$new_slave_hosts,
  'subject=s'          => \$subject,
  'body=s'             => \$body,
);

mailToContacts($smtp,$mail_from,$mail_user,$mail_pass,$mail_to,$subject,$body);
mailToContacts();
sub mailToContacts {
        my ( $smtp, $mail_from, $user, $passwd, $mail_to, $subject, $msg ) = @_;
                open my $DEBUG, "> /var/log/masterha/mhamail.log"
        or die "Can't open the debug      file:$!\n";
        my $transport = Email::Sender::Transport::SMTP::TLS->new(
                host     => 'smtp.163.com',		#指定邮箱 smtp 服务器
                port     => 25,				#指定端口号(25,465)
                username => 'shm1136265636@163.com',	#指定个人邮箱账户
                password => 'FCFXJUPZFTHHXCRK',		#指定个人邮箱 SMTP密码
                );

        my $message = Email::Simple->create(
    header => [
        From           => 'shm1136265636@163.com',	#实际环境指定 公司邮件服务器
        To             => 'shm1136265636@163.com',	#指定 个人邮箱账户
        Subject        => 'MHA-manager(192.168.168.4) 告警'	#指定邮件标题
        ],
        body           =>$body,				#可以自己书写邮件内容'...'
);
sendmail( $message, {transport => $transport} );
    return 1;
}
# Do whatever you want here
exit 0;

注意:此脚本应用之后,绝对不能有一个汉字,有汉字就报错

复制粘贴就能用,真是被网上的各种脚本耽误整整一个上午。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值