1. 程式人生 > >keepalived雙機熱備主機宕機時傳送郵件

keepalived雙機熱備主機宕機時傳送郵件

該部落格轉載自 https://blog.csdn.net/kwy15732621629/article/details/76690782  

伺服器1和伺服器2:主備關係 
當伺服器1宕機時,將自動連線上伺服器2,但這時,需要給我們發一封郵件,這樣才能知道伺服器1宕機了。

直接寫了一個指令碼,然後每次出問題時,就呼叫這個指令碼,就可以傳送郵件了。 
指令碼內容

#!/usr/bin/perl -w  
use Net::SMTP_auth;  
use strict;  
my $mailhost = 'smtp.163.com';  
my $mailfrom = '傳送郵件的郵箱名字@163.com';  
my @mailto   = ('接收郵件的郵箱名字@163.com');  
my $subject  = 'keepalived up on backup';  
my $text = "正文\n 151伺服器宕機!";    
my $user   = '傳送郵件的郵箱名稱.com';  
my $passwd = '傳送郵件的郵箱密碼';  
&SendMail();  
##############################  
# Send notice mail  
##############################  
sub SendMail() {  
    my $smtp = Net::SMTP_auth->new( $mailhost, Timeout => 120, Debug => 1 )  
      or die "Error.\n";  
    $smtp->auth( 'LOGIN', $user, $passwd );  
    foreach my $mailto (@mailto) {  
        $smtp->mail($mailfrom);  
        $smtp->to($mailto);  
        $smtp->data();  
        $smtp->datasend("To: $mailto\n");  
        $smtp->datasend("From:$mailfrom\n");  
        $smtp->datasend("Subject: $subject\n");  
        $smtp->datasend("\n");  
        $smtp->datasend("$text\n\n");   
        $smtp->dataend();  
    }  
    $smtp->quit;  
}  

keepalived 配置檔案修改內容,注:我把指令碼放到了與配置檔案同級目錄下 
新增一段:

vrrp_sync_group VG_1 {
    group {
        VI_1
    }
    notify_master 指令碼檔名字
}

可進入該指令碼目錄,直接執行指令碼,看看是否傳送郵件成功;若失敗,安裝Net::SMTP_auth模組 
安裝方法: 
yum -y install perl-CPAN 
cpan Net::SMTP_auth