使用shell命令计算到期日期



我正在编写一个代码,用于检查我的代理到期日期。我只能通过在当前时间上添加小时来计算到期日期,但现在也希望包括分钟和秒。我运行arcproxy --info,并且我感兴趣的输出(以及其他行(显示例如Time left for proxy: 45 hours 55 minutes 10 seconds。我现在想知道提取所有三个(h,m,s(参数并将其添加到date中的最短方法是什么?

我目前拥有的是PROXY_VALIDITY=$(arcproxy --info | grep -oE "proxy: [0-9]+" | grep -oE "[0-9]+")它提取小时,然后我简单地通过CCD_ 5将其添加到日期中。

当然,我可以使用多个grep命令来定义分钟和秒,但我对最简单、最干净的代码很感兴趣。。

编辑:我发现arcproxy有一个标志-i validityEnd,它给出了有效期结束时间戳,所以现在实现起来容易多了,但我仍在寻找上面问题的答案,以了解新的东西。

EDIT:arcproxy --info命令的输出:

Subject: /C=<C>/O=<O>/O=<O>/OU=<OU>/CN=<name>/CN=<CN>
Issuer: /C=<C>/O=<O>/O=<O>/OU=<OU>/CN=<name>
Identity: /C=<C>/O=<O>/O=<O>/OU=<OU>/CN=<name>
Time left for proxy: 44 hours 24 minutes 46 seconds
Proxy path: /tmp/x509up_u3431
Proxy type: X.509 Proxy Certificate Profile RFC compliant impersonation proxy - RFC inheritAll proxy
Proxy key length: 2048
Proxy signature: sha512
====== AC extension information for VO ======
VO        : vo
subject   : /C=<C>/O=<O>/O=<O>/OU=<OU>/CN=<name>
issuer    : /DC=<C>/DC=<DC>/OU=<OU>/CN=<name>
uri       : <url>:15001
attribute : <attribute>
attribute : <attribute>
tag       : <tag>:nickname=gasar8
Time left for AC: 44 hours 25 minutes 1 second

< >中的内容是我的个人数据。

试试这个:

date -d "now +$(arcproxy --info|cut -f2 -d:)"

同样根据您的问题编辑:

date -d@$(arcproxy -i validityEnd) # Change flag with appropriate argument

将输出管道连接到awk是一个选项:

arcproxy --info | awk -F: '/Time left for proxy/ { system("date -d +""$2""") }'

找到正确的输出行,将字段分隔符设置为:然后利用小时、分钟和秒输出构建一个日期命令,用awk的系统功能执行

最新更新