使用 Bash 自动查询域名到期日期

使用 Bash 自动查询域名到期日期

我需要使用 Bash 实现 Nagios 插件并使用 Whois 实时检查域名到期日期(大多数域名都是这样,.com.ar但不是全部)。

我的脚本中有以下代码:

#!/bin/bash
DOMAIN=google.com.ar
WHOIS_DATE=`wget -O - 'https://www.whois.com/whois/'$DOMAIN | grep 'expire' | awk '{print $2}'`
CURRENT_DATE=$(date +%s)
EXPIRE_DATE=$(date --date=$WHOIS_DATE+%s)
DIFFERENCE=$(($EXPIRE_DATE - $CURRENT_DATE))
CONVERSION=$((60*60*24))
DAYS=$(($DIFFERENCE/$CONVERSION))

使用$DAYS变量,我可以监控域名的到期日期。我的问题在于,第一次运行脚本时,找不到 whois 数据,迫使我打开 Web 浏览器,粘贴 URL:https://www.whois.com/whois/google.com.ar以首次启用它,然后脚本的下一次执行运行正常。

我尝试使用 Wget 和 Curl,但没有成功。

答案1

在脚本之外运行 Wget 命令会显示以下输出:

wget -O - 'https://www.whois.com/whois/google.com.ar' | grep 'expire' | awk '{print $2}'
--2019-10-31 15:23:38--  https://www.whois.com/whois/google.com.ar
Resolving www.whois.com (www.whois.com)... 64.91.226.82
Connecting to www.whois.com (www.whois.com)|64.91.226.82|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/html]
Saving to: ‘STDOUT’

-                       [ <=>                ]  46.82K  --.-KB/s    in 0.03s   

2019-10-31 15:23:39 (1.55 MB/s) - written to stdout [47939]

虽然进度状态信息没有害处,但我发现调试这样的任务会让人困惑。相反,运行相同的命令,但设置-q(又名:quiet)参数,输出会更清晰;注意输出的是日期:

wget -q -O - 'https://www.whois.com/whois/google.com.ar' | grep 'expire' | awk '{print $2}'
2020-07-08

话虽如此,输出还是比较干净的,但似乎你这边有一些 DNS 解析的东西。因此,为什么不使用whois从 shell 运行的,如下所示:

whois 'google.com.ar' | grep 'expire' | awk '{print $2}'

更干净、更快,无需使用 Wget 进行 HTTP 调用。

相关内容