Script ตรวจสอบ domain name หมดอายุ

Prawit Tangmanopeanchai
2 min readNov 23, 2021

--

นอกจากการตรวจสอบว่า certificate (SSL/TLS) ของ server เราหมดอายุแล้วหรือยัง ตัว domain name เองก็เป็นอีกตัวหนึ่งที่จำเป็นต้องตรวจสอบว่าหมดหรือยังด้วย

ตั้งใจจะใช้คำสั่ง “whois” มาใช้ในการเขียน script เพื่อตรวจสอบ แต่กลายเป็นว่าผลลัพธ์ของคำสั่ง “whois” กับ domain name ต่าง ๆ จะได้ค่าไม่เหมือนกัน เช่น yahoo.com กับ yahoo.co.thเมื่อใช้ “whois” ตรวจสอบ จะได้ผลลัพธ์ต่างกันดังนี้

จะเห็นว่าค่าของ expire date ของ domain name ที่ออกมาจะไม่เหมือนกัน ด้วยความขี้เกียจที่จะต้องมาเขียน script ให้รองรับ domain name ในนามสกุลต่าง ๆ กัน ก็เลยไปค้นหาดูว่ามีใครทำเอาไว้ให้แล้วบ้าง 😄

แล้วก็เจอครับ https://github.com/joepie91/python-whois ก็เลยเอามาใช้เขียน script เลย

สิ่งที่จะทำก็คือสร้าง file ไว้เก็บรายชื่อ domain name ที่เราต้องการจะตรวจสอบเอาไว้ โดยตั้งชื่อว่า “domain.lst” อยากตรวจกี่ตัวก็เอามาใส่รวมกันไว้ในนี้ที่เดียวเลย ตัวอย่างข้อมูลใน file เป็นดังนี้

มี 5 domain names ครับ

ก่อนที่จะสร้าง script มาอ่าน file นี้ เราต้องติดตั้ง python2 และ dateutils ก่อนโดยใช้คำสั่ง

sudo apt install python2
sudo apt install dateutils

เสร็จแล้วก็ clone git ตามด้านบนมาครับ

git clone https://github.com/joepie91/python-whois.git

จะได้คำสั่ง “pwhois” อยู่ใน directory “python-whois” ซึ่งเราจะใช้คำสั่งนี้ในการใช้ตรวจสอบวันหมดอายุของ domain name ครับ

เมื่อเราได้ file “domain.lst” ที่มีรายชื่อของ domain name ที่เราต้องการจะทดสอบแล้ว ติดตั้ง python2, dateutils แล้ว และ clone git มาเรียบร้อยแล้ว คราวนี้ก็มาเขียน script กันเลย โดยตั้งชื่อ script ว่า “domain-chk-expired.sh” โดยมีการทำงานดังนี้

MAXDAY=90
for domain in $(cat /home/akumo04learngcp/domain.lst);
do
EXPIRED=`/home/akumo04learngcp/python-whois/pwhois $domain | grep Expir | awk '{print $4}'`
DAYLEFT=`dateutils.ddiff now $EXPIRED`
MESSAGE="Domain $domain has $DAYLEFT day(s) left before expired."
if (($DAYLEFT < $MAXDAY)); then
echo "Alert : $MESSAGE";
else
echo "Ok : $MESSAGE";
fi
done

MAXDAY คือจำนวนวันที่ตั้งเอาไว้ว่าถ้า domain name มีอายุเหลือน้อยกว่านี้จะให้มีข้อความว่า “Alert” ออกมา ถ้าวันยังเหลือมากกว่าก็จะขึ้นว่า “Ok” ครับ เมื่อเราเขียนเสร็จแล้ว save (อย่าลืมเปลี่ยน mode ให้ script สามารถ run ได้ด้วยนะครับ) ก็มาลองทดสอบการทำงานกัน

จะได้ผลลัพธ์ออกมาตามนี้ ในเงื่อนไข “if” ใน script ใครจะไปใส่ให้ส่ง mail แจ้งถ้าพบ Alert ก็ได้นะครับ

คราวนี้เราก็จะได้ไม่เจอปัญหาว่า domain name หมดอายุอีกแล้วนะครับ 😄

--

--

Prawit Tangmanopeanchai
Prawit Tangmanopeanchai

Written by Prawit Tangmanopeanchai

Head of Cloud Implementation Unit at gosoft (Thailand)

No responses yet