我想知道是否可以将日期转换为show Oct 31 00:00:00 2013 GMT
。
我得到的日期如下:
NotBeforeDate=$(openssl x509 -noout -in ${CERTIFICATE} -dates | grep "notBefore")
我得到的日期是Oct 31 00:00:00 2013 GMT
,我想把它转换成10-31-2013
。
有什么命令可以做到这一点吗?还是我必须手动完成这一切?
如果是这样,最好的方法是创建自己的函数,将长日期作为参数发送,并返回短日期。
4条答案
按热度按时间xcitsw881#
openssl命令将使
NotBeforeDate
变量的值为(至少在我使用的bash版本中是这样):因此,首先我们需要删除
notBefore=
部分:然后,您可以使用
date
命令:--date
选项指示命令使用dateStr
值,--utc
指示日期为UTC(由GMT
部分指定),+"%m-%d-%Y"
将日期格式化为所需的格式。输出为:
10-31-2013
**PS:**选项可能因Linux版本而异。
您可以使用
date --help
或man date
检查所有可用的。例如,长选项
--date
和--utc
可能不可用,但等效的短版本可能可用(只是一个示例,我不确定date
命令在不同的Unix版本之间是否有这样的变化):不幸的是,我没有您使用的完全相同的环境(unix中的ksh),但这应该可以工作。
-d
选项似乎是GNU特有的,所以如果它不可用,你必须手动解析字符串。假设dateStr
的值是Oct 31 00:00:00 2013 GMT
,你可以运行:输出为:
10-31-2013
rbpvctlc2#
此脚本在检查带有证书的URL时适用。
PORT预设为443。
xyhw6mcr3#
为了避免重复前面对
date
命令的解释,这里有一个简洁的Bash函数,它读取证书文件,并以ISO格式或Unix时间戳(用于整数比较)输出开始或结束日期,并且可以在Linux或macOS上使用:当然,您可以通过更改
fmt
来增强,以适应您的输出格式需要,甚至可以添加case语句以接受更多格式。示例:
ioekq8ef4#
我从上面的想法做了一个bash OneLiner。也许它对某人有用:
(Use'cut -c 10-'当不发出问候时(之后)