Lua 中一个即将到来的日期匹配

我在寻求一点 Lua 脚本的帮助。基本上,我想要在今天的 X 分钟之前匹配一个即将到来的日期。在下面的示例中,我使用了 9000 分钟。

alarm.get ()

message = "证书过期警告-做某事"
SUPPKEY = "证书过期"
SUBSYS = "1.1"
SOURCE = "SERVERNAME"

--local pattern = "(%d-%m-%Y)"

local t = os.date('*t'); -- 获取当前日期和时间

print(os.date("%d-%m-%Y")); -- 打印今天的日期

t.min = t.min - 9000; -- 减去 9000 分钟

--print(os.date("%Y-%m-%d %H:%m:%S", os.time(t))); --原始脚本

print(os.date("%d-%m-%Y", os.time(t))); -- 打印警报日期

if string.match ~=t.min --匹配字符串

--if string.match(a.message, pattern)

--then print (al.message)

then print ("我们匹配了")

--then nimbus.alarm (1, message , SUPPKEY , SUBSYS , SOURCE) --发送警报

else print ("一切都好") -- 没有警报

--else print (al.message)

end

alarm.get 获取了一行文本,看起来像这样:

DOMAIN\USERNAME,Web Server (WebServer),13/01/2017 09:13, 13/01/2019,COMPANY_NAME,HOSTNAME_FQDN,SITE

所以上面显示的行作为 a.message 变量传递,我希望将粗体突出显示的日期与今天的日期匹配,并减去 9000 分钟。

被注释掉的部分只是我测试不同的事情。

点赞
用户2340876
用户2340876

我不确定我是否理解了这个问题,但从我的角度来看,似乎你正在尝试完成以下两个任务:

  1. 获取当前时间减去9000分钟,并以DD/MM/YYYY格式显示。
  2. 将此时间与程序从文件中读取的时间进行比较,并在两个日期相等时执行某些操作。

以下是我的示例代码:

-- 设置
local ALLOWED_AGE = 9000 -- 分钟

-- 输入行(仅供测试)
local inputstr = “DOMAIN\\USERNAME,Web Server(WebServer),13/01/2017 09:1313/01/2019,COMPANY_NAME,HOSTNAME_FQDN,SITE”

-- 通过逗号将行分隔成7个变量
local path, server, timedate, company_name, hostname, site = string.match(inputstr,“([^,]+),([^,]+),([^,]+),([^,]+),([^,]+),([^,]+),([^,]+)”)

-- 检查行是否正确(不是必要的,但应在此处处理可能的错误)
-- 还要注意,此处应有一些附加检查(例如,正则表达式匹配DD/MM/YYYY格式)
if date == nil then
   print(“读取行时出错:”..inputstr)
end

-- 获取当前时间减去9000分钟(以DD/MM/YYYY格式)
local target_date = os.date(“%d/%m/%Y”,os.time()- ALLOWED_AGE * 60-- 打印我们得到的内容(供测试目的)
print(“目标日期:”..target_date..”,输入日期:”..date-- 测试匹配
if target_date == date then
   print(“日期匹配!”)
else
   print(“日期不匹配!”)
end

虽然我不确定,在你的情况下是否应该检查“一个日期是否大于/小于另一个日期”。

那么上面的代码应该修改为以下内容:

-- 从格式为DD/MM/YYYY的日期中提取天,月和年
local d, m, y = string.match(date, “([^/]+)/([^/]+)/([^/]+)”)
-- 请注意,我添加了一天,因此证书实际上将在“有效期”结束后的一天到期。
local valid_until = os.time({year = y,month = m,day = d + 1})
local expire_time = os.time()- ALLOWED_AGE * 60 -- 所有比这更早的证书都应该过期。

-- 打印我们得到的内容(供测试目的)
print(“过期时间: ”..expire_time..” ,证书有效期至:”..valid_until)

-- 是否过期?
if valid_until <= expire_time then
   print(“哎呀! 证书已过期。”)
else
   print(“证书日期有效。”)
end
2017-07-26 19:16:26