1. 程式人生 > >郵件報警(postfix)

郵件報警(postfix)

login span sendmail shp str sta 主機ip 宋體 build

postfix是Wietse Venema在IBM的GPL協議之下開發的MTA(郵件傳輸代理)軟件。postfix是Wietse Venema想要為使用最廣泛的sendmail提供替代品的一個嘗試。在Internet世界中,大部分的電子郵件都是通過sendmail來投遞的,大約有100萬用戶使用sendmail,每天投遞上億封郵件。這真是一個讓人吃驚的數字。Postfix試圖更快、更容易管理、更安全,同時還與sendmail保持足夠的兼容性。

系統:CentOS release 6.5 (Final) x86_64

由於centos6後系統就安裝了postfix 因此只需啟動即可:
配置如下:

service postfix start                    //啟動服務
chkconfig postfix on                   //設置開機自啟

安裝mailx:

yum install -y mailx 
改修配置文件添加如下內容:
vim /etc/mail.rc 

set [email protected] smtp=smtp.xxx.com              //郵件服務器
set smtp-auth-user=xxx smtp-auth-password=xxx     //用戶及密碼
set smtp-auth=login

測試:

echo ‘123‘|mail -s "123" [email protected]

業務需要監控主機是否宕機及服務狀態所有我通過配置單向ssh免秘鑰登錄運用ssh命令來監控服務。

ssh批量分發腳本:

#!/bin/bash
User=root
passWord=123
port=2266
function YumBuild(){
echo "正在安裝epel源yum倉庫,請稍後..."
cd /etc/yum.repos.d/ &&[ -d bak ] || mkdir bak
[ `find ./*.* -type f | wc -l` -gt 0 ] && find ./*.* -type f |  xargs -i mv {} bak/
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo &>/dev/null
yum -y clean all &>/dev/null
yum makecache &>/dev/null
}
rpm -q sshpass &>/dev/null || yum -y install sshpass &>/dev/null
if [ $? -gt 0 ];then
    YumBuild
    yum -y install sshpass &>/dev/null || (echo "sshpass build error!" && exit)
fi
[ -d ~/.ssh ] || mkdir ~/.ssh;chmod 700 ~/.ssh
echo "正在創建密鑰對...."
rm -rf ~/.ssh/id_dsa ~/.ssh/id_dsa.pub
ssh-keygen -t dsa -f ~/.ssh/id_dsa -P "" &>/dev/null
for ip in `cat /root/Pingip.txt`
do
    ping $ip -c1 &>/dev/null
    if [ $? -gt 0 ];then
        echo "$ip無法ping通請檢查網絡" 
        continue
    fi
    sshpass -p "$passWord" ssh-copy-id -i ~/.ssh/id_dsa.pub "-o StrictHostKeyChecking=no -p2266 ${User}@$ip" &>/dev/null
    echo "$ip 密鑰分發成功"
done

fping與ping的對比

fping與ping中的date數據不同

1. 它們使用的協議相同都是ICMP。

2. 探測機制和默認回顯相同都是延遲延遲。

3. fping可同時探測多個ip,ping只能手工輸出不通ip段。

4. fping的數據包大小為56字節,ping的數據包字節為48(ping全部默認字節為56)。

5. fping默認ping間距為25毫秒,ping默認為1秒。

郵件報警腳本:

#!/bin/sh
if [ `which fping |wc -l` -eq 0 ];then 
wget --limit-rate 500k http://www.fping.org/dist/fping-3.8.tar.gz
tar zxvf fping-3.8.tar.gz && cd fping-3.8
./configure && make && make install
fi
rm -f result.txt
cat /root/baojing/Pingip.txt |fping -u >>result.txt         //Pingip.txt為監控主機ip -u只顯示ping不通的機子
while read line
do
        echo "$line宕機"|mail -s "報警" [email protected]
done <result.txt
for line in `cat /root/baojing/ATSip.txt`                 //ATSip.txt 為服務機子IP
do
wget -SO /dev/null "http://www.baidu.com" -e "http_proxy=$line" &> /dev/null                  //wget代理訪問
if [ `echo $?` -eq 0 ] && [ `ssh -p2266 root@$line ps aux|grep /usr/local/tcacheserver/bin/traffic_ |grep -v grep |wc -l` -eq 3 ]
        then
     echo "" >/dev/null
 else
        echo "$line ATS is down"|mail -s "報警" [email protected]
fi
done

技術分享

郵件報警(postfix)