ドメインの残り有効期限を取得するシェルスクリプト

とあるところで独自ドメインの更新忘れが起きていて、名前解決できていない状態になっていました。。。独自ドメインの更新忘れはかなり致命的な状況に陥ることに気づいたので、監視できる仕組みを構築せねばということで、調べて作成してみました。

whoisコマンドが使用出来ることが前提です。debian系なら、「aptitude install whois」してください。また、「.com」しか対象にしていません。

作成したシェルスクリプトはGistでも公開しています。以下の通りです:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
########################################
# Name: Kazuhiro MUSASHI
#
# about:
#
# Usage:
#
# Author:
# Date:
########################################

set -e

# Constants
WHOIS='/usr/bin/whois'

# Check the number of the arguments
if [ $# -ne 1 ]; then
  exit 1
fi

DOMAIN=$1

# Check the specified domain name
if [ ! ${DOMAIN##*.} == "com" ]; then

  echo "Specify the .com domain name."
  exit 1

fi

# Check whether the whois command exists or not
if [ ! -x ${WHOIS} ]; then

  echo "${WHOIS} command does not exist."
  exit 1

fi

# Execute the whois command
EXPIRE=`${WHOIS} ${DOMAIN} | grep Expiration | tail -n 1 | cut -f 3 -d " "`

# Convert the expiration date into seconds
EXPIRE_SECS=`date +%s --date=${EXPIRE}`

# Acquire the now seconds
CURRENTDATE_SEC=`date +%s`

# Calculate the remaining days
((DIFF_SEC=EXPIRE_SECS-CURRENTDATE_SEC))

REMAIN_DAYS=$((DIFF_SEC/86400))

echo ${REMAIN_DAYS}

exit 0

ここがとても参考になりました。dateコマンドって色々と使えるんですね。

このシェルスクリプトを Nagios に組み込んであげれば、監視の仕組み構築が完了ということになるかな。