你的位置:首页 > 操作系统

[操作系统]邮件报警(postfix)

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 from=xxx@xxx.com smtp=smtp.xxx.com    //邮件服务器set smtp-auth-user=xxx smtp-auth-password=xxx  //用户及密码set smtp-auth=login

 测试:

echo '123'|mail -s "123" xxxx@xx.com

 业务需要监控主机是否宕机及服务状态所有我通过配置单向ssh免秘钥登录运用ssh命令来监控服务。

ssh批量分发脚本:

#!/bin/bashUser=rootpassWord=123port=2266function 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 &>/dev/nullyum -y clean all &>/dev/nullyum makecache &>/dev/null}rpm -q sshpass &>/dev/null || yum -y install sshpass &>/dev/nullif [ $? -gt 0 ];then YumBuild yum -y install sshpass &>/dev/null || (echo "sshpass build error!" && exit)fi[ -d ~/.ssh ] || mkdir ~/.ssh;chmod 700 ~/.sshecho "正在创建密钥对...."rm -rf ~/.ssh/id_dsa ~/.ssh/id_dsa.pubssh-keygen -t dsa -f ~/.ssh/id_dsa -P "" &>/dev/nullfor 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/shif [ `which fping |wc -l` -eq 0 ];then wget --limit-rate 500k zxvf fping-3.8.tar.gz && cd fping-3.8./configure && make && make installfirm -f result.txtcat /root/baojing/Pingip.txt |fping -u >>result.txt   //Pingip.txt为监控主机ip -u只显示ping不通的机子while read linedo  echo "$line宕机"|mail -s "报警" xxx@qq.comdone <result.txtfor line in `cat /root/baojing/ATSip.txt`     //ATSip.txt 为服务机子IPdowget -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 "报警" xxx@qq.comfidone