10. 檢測域名是否到期

最愛喝酸奶發表於2019-01-29

任何網站對外提供服務,都需要有一個域名,就像每個人都有人名,網站的名字就是這個域名。如果你想做一個網站,首先就需要租借一個域名。

當我們管理的域名數量非常多的時候,就很容易忘記為這些域名續期從而導致過期並回收。本案例的需求是監控指定的域名是否到期。

具體要求如下:

1)寫一個函式,域名以引數的形式傳遞給這個函式;

2)域名到期前的一週和到期後的一週(兩週),每天傳送一封告警郵件;

3)指令碼每天執行一次。

郵件指令碼如下:

#!/usr/bin/python
#coding:utf-8
import smtplib
from email.mine.text import MIMEText
import sys
mail_host = 'stmp.163.com'
mail_user = 'test@163.com'
mail_pass = 'your_mail_password'
mail_postfix = '163.com'
def send_mail(to_list,subject,content):
    me = "zabbix 監控告警平臺"+"<"+mail_user+"@"+mail_postfix+">"
    msg = MIMEText(content,'plain','utf-8')
    msg['Subject'] = subject
    msg['From'] = me
    msg['to'] = to_list
    try:
        s = smtplib:SMTP()
        s.connect(mail_host)
        s.login(mail_user,mail_pass)
        s.sendmail(me,to_list,msg.as_string())
        s.close()
        return True
    except Exception,e:
        print str(e)
        return False
if __name__ == "__main__"
    send_mail(sys.argv[1], sys.argv[2], sys.argv[3])

參考指令碼如下:

#!/bin/bash
#用於檢測域名是否過期

#定義收件人郵箱
mail="/usr/local/sbin/mail.py"
mail_user=admin@admin.com

if ! rpm -q jwhois &>/dev/null
then
    yum install -y jwhois           #沒有whois命令就安裝
fi

echo  "`whois $1`" > /tmp/domain.txt

check_com()
{
    expiration_date_com=`cat /tmp/domain.txt |grep "Expiration Date" |awk '{print $5}' |cut -c1-10 |awk -F '-' '{print $1 $2 $3}'`

    i=7
    while [ $i -ge 0 ]
    do
        alert_date1=`date -d "+$i day" +%F |awk -F '-' '{print $1 $2 $3}'`
        alert_date2=`date -d "-$i day" +%F |awk -F '-' '{print $1 $2 $3}'`
        if [ "$expiration_date_com" -eq "$alert_date1" ]
        then
            #echo -e "$1 此域名還有 $i 天過期,請儘快更新!"
            python $mail $mail_user "$1 此域名還有 $i 天過期,請儘快更新!" 2>/dev/null
        elif [ "$expiration_date_com" -eq "$alert_date2" ]
        then
            #echo -e "$1 此域名已經過期 $i 天,請儘快更新!"
            python $mail $mail_user "$1 此域名已經過期 $i 天,請儘快更新!" 2>/dev/null
        fi
    i=$[$i-1]
    done
}


check_cn()
{
    expiration_date_cn=`cat /tmp/domain.txt |grep "Expiration Time" |awk '{print $3}' |awk -F '-' '{print $1 $2 $3}'`

    i=7
    while [ $i -ge 0 ]
    do
        alert_date1=`date -d "+$i day" +%F |awk -F '-' '{print $1 $2 $3}'`
        alert_date2=`date -d "-$i day" +%F |awk -F '-' '{print $1 $2 $3}'`
        if [ "$expiration_date_cn" -eq "$alert_date1" ]
        then
            #echo -e "$1 此域名還有 $i 天過期,請儘快更新!"
            python $mail $mail_user "$1 此域名還有 $i 天過期,請儘快更新!" 2>/dev/null
        elif [ "$expiration_date_cn" -eq "$alert_date2" ]
        then
            #echo -e "$1 此域名已經過期 $i 天,請儘快更新!"
            python $mail $mail_user "$1 此域名已經過期 $i 天,請儘快更新!" 2>/dev/null
        fi
    i=$[$i-1]
    done
}

domain=`echo $1 |cut -d '.' -f 2`

if [ "$domain" == "com" ]
then
    check_com $1
elif [ "$domain" == "cn" ]
then
    check_cn $1
fi

增加計劃任務:

0 8 * * * /usr/local/sbin/check_domain.sh alibaba.com         #以 alibaba.com 為例,每天早上8點檢查一次

相關文章