用于计算域名到期剩余天数的 Bash 脚本

用于计算域名到期剩余天数的 Bash 脚本

你好,我有一个任务,要查找域名到期的剩余天数。输出应为剩余天数(整数)所以我尝试用这种方法传递域作为参数

例如:- 我的域名 -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))

相关内容