我需要使用 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 调用。