自用告警脚本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;
注意:此脚本应用之后,绝对不能有一个汉字,有汉字就报错
复制粘贴就能用,真是被网上的各种脚本耽误整整一个上午。