2025年3月19日 星期三 甲辰(龙)年 月十八 设为首页 加入收藏
rss
您当前的位置:首页 > 计算机 > 编程开发 > DOS/BAT与(脚本)

BAT批处理脚本案例--判断证书是否到期

时间:04-14来源:作者:点击数:79

通常服务器上有很多证书,这些证书大都可以通过解析文件,获取到期时间,比如某个证书文件*.key,内容如下:

  • <?xml version="1.0" encoding="GB2312"?>
  • <?watermark value=""?>
  • <license>
  • ...
  • <outofdate>20200531</outofdate>

我们只要解析文件,获取outofdate所在文本行,解析获取20200531字符串,然后转换成日期并判断是否到期即可,具体脚本代码如下:

ssl_date.bat

  • @echo off & setlocal enabledelayedexpansion
  • set arg1=%~1
  • if "%arg1%"=="" ( goto usage )
  • set "arg1=%arg1:(=^(%"
  • set "arg1=%arg1:)=^)%"
  • for /f %%i in (%arg1%) do (
  • echo "%%i" | findstr /i "outofdate" > nul && (
  • set "outdate=%%i"
  • )
  • )
  • if defined outdate (
  • set "outdate=%outdate:~11,8%"
  • )
  • call :daydiff %outdate% the_diff
  • echo %the_diff%
  • goto :eof
  • :daydiff arg1 the_diff
  • rem 20200202
  • set arg1=%~1
  • set /a arg_days=(%arg1:~0,4%) * 12 * 30 + (%arg1:~4,1%) * 10 * 30 + (%arg1:~5,1%) * 30
  • if %arg1:~6,1% equ 0 (
  • set /a arg_days=%arg_days% + %arg1:~7,1%
  • ) else (
  • set /a arg_days=%arg_days% + %arg1:~6,2%
  • )
  • set cur_date=%date%
  • set /a cur_days=(%cur_date:~0,4%) * 12 * 30 + (%cur_date:~5,1%) * 10 * 30 + (%cur_date:~6,1%) * 30
  • if "%arg1:~8,1%" equ "0" (
  • set /a cur_days=%cur_days% + %cur_date:~9,1%
  • ) else (
  • set /a cur_days=%cur_days% + %cur_date:~8,2%
  • )
  • set /a diff_days=%arg_days%-%cur_days%
  • set "%2=%diff_days%"
  • goto :eof
  • :usage
  • echo "Usage: %0 <filepath> <outofdate>"
  • goto end
  • :end
  • exit /B 0

代码说明:

1)set arg1=%~1,参数去引号处理,“c:\ddd.key” => c:\ddd.key

2)set “arg1=%arg1:(=^(%”,括号转义处理,文件路径不能有括号

3)daydiff ,一个计算两个日期差几天的函数,通常证书是否到期需要提前通知,一般是10天等,所以计算差几天可能有1-2天误差,不影响功能使用

使用方法:

  • ssl_date.bat ssl.key
  • 130

运行结果:130,表示证书还有130天到期

如果有zabbix等监控软件的话,那么只要配置一个监控项目,并设置<10报警,那么当到期时间10内的话,zabbix就会告警提示。

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门