解析日期以计算从shell脚本到证书到期的天数
我想获得证书到期前的天数。使用 openssl 可以轻松提取日期
> cat cert | openssl x509 -noout -enddate
notAfter=Jun 8 17:07:09 2021 GMT
不幸的是,解析日期Jun 8 17:07:09 2021 GMT并找到直到今天的日子并不是那么简单。目标是拥有
> cat cert | openssl x509 -noout -enddate | ...some commands...
15
这意味着距离证书到期还有 15 天。
我知道 openssl-checkend选项,但这只是一个布尔值,我想要天数。
回答
您可以使用这个单行 shell 脚本:
expiryDays=$(( ($(date -d "$(openssl x509 -in cert -enddate -noout | cut -d= -f2)" '+%s') - $(date '+%s')) / 86400 ))
这是分手:
openssl ...命令以notAfter=...格式打印到期日期cut -d= -f2在之后获取文本=date -d ...'+%s'`: 获取到期日的 EPOCH 秒值date '+%s': 获取今天日期的 EPOCH 秒值(epochExpiry - epochToday) / 86400:获得 2 个 EPOCH 值的差异作为天数