#!.\venv\Scripts\python.exe # -*- coding: utf-8 -*- # # for Python version 3.10 # Author:William Huang # Date:2022/10/06 # program:checkdns.py # pip install dnspython # Ref. # https://pypi.org/project/dnspython/ # https://dnspython.readthedocs.io/en/stable/resolver-class.html
import dns.resolver from time import sleep, ctime
# DNS查詢的網域名稱 dm = ".yourname.com" # DNS查詢的主機名稱,加上網域名稱,即 FQDN dnsa = ['www', 'eip', 'cms', 'erp'] # DNS伺服器IPs nsl = ['dns-ip1', 'dns-ip2', 'dns-ip3', 'dns-ip4'] # 產生Resolver物件 resl = dns.resolver.Resolver(configure=False) # 持續執行不中止 while True: # 逐一對DNS伺服器,查詢FQDN for ns in nsl: # 一次設定一個,用於查詢的DNS伺服器 resl.nameservers = [ns] # 逐一查詢主機名稱 for nm in dnsa: # 將主機名稱和網域名稱合併成FQDN tmp = nm + dm # 錯誤處理 try: # 查FQDN的A記錄 result = resl.resolve(tmp, 'A') # 輸出查詢結果 for ipval in result: print(nm + "'s IP=", ipval.to_text()) except Exception as e: # 列印錯誤訊息 # 請自行增加:出現錯誤,發email alert功能 print(e) # 輸出用於查詢的DNS伺服器與當下時間 print('NS = ' + ns + " ---- " + ctime()) # 休息60秒 sleep(60)
|