Centos使用mailx+qq邮箱监控服务器网络丢包情况

Centos使用mailx+qq邮箱监控服务器网络丢包情况

  1. 检查系统是否安装mailx,一般centos都会自带,如果没有运行yum -y install mailx
[root@catchfires ~]# rpm -qa |grep mailx
mailx-12.4-10.el6_10.x86_64
  1. 编辑/etc/mail.rc 文件,配置mail.rc

    set [email protected] #qq邮箱地址
    set smtp="smtps://smtp.qq.com:465" #qq的smtp地址
    set smtp-auth-user=123456 #qq账号
    set smtp-auth-password=yhpdkfj3844j #qq邮箱生成的授权码
    set smtp-auth=login
    set ssl-verify=ignore
    set nss-config-dir=/etc/pki/nssdb #存放qq邮箱的cert的地方
    
  2. 配置完成后就可以使用mail命令发邮件了,先测试一下

    [root@catchfires ~] echo "test" |mail -s test [email protected]
    Error in certificate: Peer's certificate issuer has been marked as not trusted by the.
    

    发现邮件可以发送成功,但是会报错:Error in certificate: Peer's certificate issuer has been marked as not trusted by the.

    这个报错的意思是:证书错误:Peer的证书发布者被标记为不被信任。

    搜了一下,原来是/etc/pki/nssdb 目录下没有放qq.crt的证书,解决方法如下:

    [root@catchfires ~]# cd /etc/pki/nssdb/
    [root@catchfires nssdb]# echo -n | openssl s_client -connect smtp.qq.com:465 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > ./qq.crt
    [root@catchfires nssdb]# certutil -A -n "GeoTrust SSL CA - G3" -t "Pu,Pu,Pu"  -d ./ -i qq.crt //添加一个证书到证书数据库中
    [root@catchfires nssdb]# echo "test" |mail -s test [email protected]
    // 如果没有certutil命令,可以运行yum install -y nss-tools
    
  3. 再次测试后完美解决,下面开始添加网络监控系统及时报警,大致的逻辑是1分钟一次统计网络丢包情况,如果丢包> 2%时,发送邮件。

    [root@catchfires ~]# cat /etc/crontab |grep moniter
     */1 * * * * root /root/moniter.sh #添加一分钟一次的网络监控程序
    [root@catchfires ~]# cat /root/moniter.sh
    #!/bin/bash
    ping 223.5.5.5 -n -i 0.5 -q -w 50 -W 1|xargs|awk '{echo -e "\n";printf("%-10s %-15s %6s %s/%s %40s\n",strftime("%F %H:%M:%S"),$2, $18, $13, $16, $26)}' >>/tmp/moniter.log
    
    ping1=`tail /tmp/moniter.log|grep -v " 0%"|grep -v " 1%"|grep -v " 2%"|awk '{print $4" "$3" "$2" "$1}'|tail -n1`
    ping2=`tail /tmp/moniter.log|grep -v " 0%"|grep -v " 1%"|grep -v " 2%"|awk '{print $4}'|cut -f1 -d%|tail -n1`
    if [ $ping2 -gt 3 ] #bash的判断相当恶心,if前后,[]前后都必须有空格
    then
    echo $ping1 |mail -s "$ping1" 123456qq.com
    fi
    

你可能感兴趣的:(Centos使用mailx+qq邮箱监控服务器网络丢包情况)