【问题标题】:How to convert a long date to short date from SSL certificates | Unix KSH如何将 SSL 证书中的长日期转换为短日期 | Unix KSH
【发布时间】:2017-12-31 20:25:26
【问题描述】:

我想知道是否可以将显示Oct 31 00:00:00 2013 GMT 的日期转换为10-31-2013

我得到的日期如下:

NotBeforeDate=$(openssl x509 -noout -in ${CERTIFICATE} -dates | grep "notBefore")

我得到的日期是Oct 31 00:00:00 2013 GMT,我想把它转换成10-31-2013

有什么命令可以做到吗?还是我必须全部手动完成?

如果是这样,最好的方法是创建我自己的函数并将长日期作为参数发送并返回一个短日期。

【问题讨论】:

  • 您能否详细说明...该日期是来自log 文件还是什么?
  • @Hackerman 我从 SSL 证书中获取该日期并保存在一个变量中,只是想知道它是否可以转换为短日期。
  • saved in a variable,怎么样?
  • 使用以下命令:NotBeforeDate=$(openssl x509 -noout -in ${CERTIFICATE} -dates | grep "notBefore")

标签: date datetime unix converter date-formatting


【解决方案1】:

openssl 命令将使NotBeforeDate 变量具有值(至少在我使用的 bash 版本中):

notBefore=Oct 31 00:00:00 2013 GMT

所以,首先我们需要删除notBefore= 部分:

dateStr=${NotBeforeDate/notBefore=/}

然后可以使用date命令:

date --date="$dateStr" --utc +"%m-%d-%Y"

--date 选项告诉命令使用dateStr 值,--utc 告诉日期是 UTC(由GMT 部分指定),+"%m-%d-%Y" 将日期格式化为所需的格式。

输出是:

2013 年 10 月 31 日


PS:选项可能因您的 Linux 版本而异。
您可以使用date --helpman date 查看所有可用的。

例如,长选项 --date--utc 可能不可用,但等效的短版本可能是(只是一个例子,我不确定 date 命令在不同的 unix 版本之间是否有这种差异):

date -d "$dateStr" -u +"%m-%d-%Y"

很遗憾,我没有您使用的完全相同的环境(unix 中的 ksh),但这应该可以。


-d 选项似乎是 GNU 特定的,所以如果它不可用,您将不得不手动解析字符串。假设dateStr 的值为Oct 31 00:00:00 2013 GMT,您可以运行:

printf '%s\n' "$dateStr" | awk '{ printf "%02d-%02d-%04d\n", (index("JanFebMarAprMayJunJulAugSepOctNovDec",$1)+2)/3, $2, $4}'

输出是:

2013 年 10 月 31 日

【讨论】:

  • 我试过了,但我认为日期版本是旧的,消息显示:date: illegal option
  • @JavierSalas 你都试过了吗(--date-d)?如果您输入date --help,它会显示哪些选项?
  • 不行,用的是legacy模式
  • @JavierSalas 如果-d 选项不可用,您将不得不解析字符串 - 我已经使用awk 的解决方案更新了我的答案
【解决方案2】:

在检查带有证书的 url 时,此脚本适用于我。

date --date="$(echo | openssl s_client -servername $DOMAIN -connect $DOMAIN:$PORT | openssl x509 -noout -enddate | awk -F '=' '{print $NF}' )" --iso-8601

PORT 默认为 443。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-29
    • 1970-01-01
    • 1970-01-01
    • 2021-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多