我有一个命令来获取虚拟服务器的创建日期,从行Created: Mon Mar 28 07:19:50 UTC 2022 (3 weeks ago)获取信息。
root@hcloud-admin:/home/scripts# hcloud server describe Miguel-Zabbix-hel1-dc2 | awk 'NR == 4' | awk -F " " '{ print $2, $3, $4 }'输出:
Mon Mar 28还可以使用hcloud CLI从我的矿用服务器主机获得日期:
root@hcloud-admin:/home/scripts# date +"%a %b %d"
Fri Apr 22请您帮忙,这是否可以用bash script比较这两个日期,以确定在创建服务器之后是否已经过了10天?
如果10天过去了,我想在bash脚本中使用命令hcloud server poweroof Miguel-Zabbix-hel1-dc2。
全部产出:
root@hcloud-admin:/home/scripts# hcloud server describe Miguel-Zabbix-hel1-dc2
ID: 191220000
Name: Miguel-Zabbix-hel1-dc2
Status: running
Created: Mon Mar 28 07:19:50 UTC 2022 (3 weeks ago)
Server Type: cpx11 (ID: 22)
ID: 22
Name: cpx11
Description: CPX 11
Cores: 2
Memory: 2 GB
Disk: 40 GB
Storage Type: local
Public Net:
IPv4:
IP: 11.111.111.111
Blocked: no
DNS: static.111.111.111.111.clients.your-server.de
IPv6:
IP: 0a99:4f9:p099:0d0b::/555
Blocked: no
Floating IPs:
No Floating IPs
Private Net:
No Private Networks
Volumes:
No Volumes
Image:
ID: 15512600
Type: system
Status: available
Name: ubuntu-20.04
Description: Ubuntu 20.04
Image size: -
Disk size: 5 GB
Created: Thu Apr 23 17:55:14 UTC 2020 (2 years ago)
OS flavor: ubuntu
OS version: 20.04
Rapid deploy: yes
Datacenter:
ID: 3
Name: hel1-dc2
Description: Helsinki 1 DC 2
Location:
Name: hel1
Description: Helsinki DC Park 1
Country: FI
City: Helsinki
Latitude: 60.169855
Longitude: 24.938379
Traffic:
Outgoing: 208 MB
Ingoing: 280 MB
Included: 22 TB
Backup Window: Backups disabled
Rescue System: disabled
ISO:
No ISO attached
Protection:
Delete: no
Rebuild: no
Labels:
Name: Zabbix发布于 2022-04-22 15:22:39
是。这是可能的。诀窍是将日期/时间字符串转换为“自时代以来的秒数”格式(日期+%s),然后比较结果。在Linux的现代版本中,“date”命令可以解释任何格式合理的日期字符串,并将其转换为各种格式:
date_1=$(hcloud server describe Miguel-Zabbix-hel1-dc2 | sed -n 's/^Created:\([^(]*\).*$/\1/p')
seconds_1=$(date -s "${date_1}" +%s)
seconds_2=$(date +%s)
day_diff=$(((seconds_2 - seconds_1)/86400)) # Number of seconds in a day = 86,400.注意,$((.))结构只做整数运算,并且它会四舍五入,所以您可能想要调整算法以满足您的确切需要。此外,这个简单的计算没有考虑任何日期计算的细微差别,如夏时制,或闰秒等,但对于你的情况,我怀疑这些是非常重要的。
另外,请注意,我使用的是sed而不是awk。对于这种类型的任务,sed更简洁,但可能有点复杂,因此我将为您详细分析-n 's/^Created:\([^(]*\).*$/\1/p'参数:
-n:如果在当前行中找到pat,请不要用default.s/pat/rep/p:打印每一行,用rep替换并打印.在我们的例子中,pat是:
^Created::行(^)的开头,后面跟着确切的字符串'Created:',\(:开始记住下面的内容,[^(]*:任意字符(.)这不是字符串中的(^) (‘,重复0次或多次(*),\):停止记忆,.*$:任何单个字符(.)重复0次或多次,后面是行尾($).而rep是
\1:记忆中的第一件事(即在Created:之后和().之前的一切)
https://stackoverflow.com/questions/71968313
复制相似问题