You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改Bash脚本以检查本地SSL证书有效期而非远程端点?

修改Bash脚本以支持本地SSL证书有效期检查

原脚本用于检查远程站点的SSL证书剩余有效期,现在需要调整为直接读取本地证书文件并计算剩余天数,期望用法如下:

check_cert.sh fqdn.cert.name.cer
81

修改后的脚本

#!/bin/bash
# 计算并输出SSL证书的剩余有效期天数
#
# 使用示例:
#   $ check_cert.sh fqdn.cert.name.cer
#   81
#
# 退出码说明:
#   0   - 证书未过期
#   1   - 证书已过期
#   254 - 证书文件为空或无效
#   255 - 未提供参数或文件不存在

# 检查参数数量
if [ "$#" -ne 1 ]; then
  echo "用法: $0 <本地证书文件路径>"
  exit 255
fi

certificate_file="$1"

# 检查文件是否存在
if [ ! -f "$certificate_file" ]; then
  echo "错误: 指定的证书文件不存在"
  exit 255
fi

# 检查证书文件是否有效且非空
certificate_size=$(stat -c "%s" "$certificate_file")
if [ "$certificate_size" -le 1 ]; then
  exit 254
fi

# 提取证书过期日期并计算剩余天数
date=$(openssl x509 -in "$certificate_file" -enddate -noout 2>/dev/null | sed "s/.*=\(.*\)/\1/")
# 处理openssl命令执行失败的情况(比如不是有效证书)
if [ -z "$date" ]; then
  exit 254
fi

date_s=$(date -d "${date}" +%s)
now_s=$(date -d now +%s)
date_diff=$(( (date_s - now_s) / 86400 ))

echo "$date_diff"

# 返回对应退出码
if [ "$date_s" -gt "$now_s" ]; then
  exit 0 # 证书有效
else
  exit 1 # 证书已过期
fi

修改说明

  • 移除了原脚本中DNS解析、远程抓取证书的逻辑,直接使用用户传入的本地文件
  • 新增了参数数量检查和文件存在性检查,避免无效输入
  • 调整了退出码:移除原255(DNS失败),将未提供参数/文件不存在的情况设为255
  • 增加了对openssl命令执行失败的判断,避免非证书文件导致的错误

内容的提问来源于stack exchange,提问作者puppet_master

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 09:25:13