你好,我有一个任务,要查找域名到期的剩余天数。输出应为剩余天数(整数)所以我尝试用这种方法传递域作为参数
例如:- 我的域名 -www.xplosa.com
脚本文件:-./域名exp.sh
执行方法:-./domain-exp.sh www.xplosa.com
#!/bin/bash
target=$1
# Get the expiration date
expdate="$(whois $1 | egrep -i 'Registrar Registration Expiration Date:' | head -1)"
# Turn it into seconds (easier to compute with)
expdate=("$expdate" +%s)
# Get the current date in seconds
curdate=$(date +%s)
# Print the difference in days
echo ($expdate - $curdate) / 86400
这不是我期望的输出,请帮助我解决这个问题,提前谢谢。
答案1
首先,如果到期日期描述类似于“到期日期:”或“到期日期:”,您的 grep 将无法工作。因此,让我们使用如下模式进行 grep:。grep -iE 'expir.*date|expir.*on'
当然,这可能必须涉及。
head -1
用于将结果限制为 1 行
grep 将导致如下输出:
Expiry Date: 2020-08-10T07:47:34Z
因此,我们需要使用另一个 grep 仅保留最后一个单词:grep -oE '[^ ]+$'
日期转换为秒以及最终计算存在一些问题。请在下面的更正脚本中找到它们
#!/bin/bash
target=$1
# Get the expiration date
expdate=$(whois $1 | grep -iE 'expir.*date|expir.*on' | head -1 | grep -oE '[^ ]+$')
# Turn it into seconds (easier to compute with)
expdate=$(date -d"$expdate" +%s)
# Get the current date in seconds
curdate=$(date +%s)
# Print the difference in days
echo $(((expdate-curdate)/86400))