编写一个根据域名扫描nginx证书是否过期的shell脚本
时间: 2023-08-19 14:56:45 浏览: 95
好的,请参考以下的 shell 脚本,可以根据域名扫描 nginx 证书是否过期:
```shell
#!/bin/bash
# 指定需要扫描的证书路径
cert_path="/etc/nginx/ssl"
# 指定需要扫描的域名
domains=("example.com" "example.org")
# 获取当前日期
current_date=$(date +%s)
# 循环遍历域名列表
for domain in "${domains[@]}"; do
# 构建证书文件路径
cert_file="${cert_path}/${domain}.crt"
# 检查证书文件是否存在
if [ -f "$cert_file" ]; then
# 提取证书过期日期
expiration_date=$(openssl x509 -enddate -noout -in "$cert_file" | cut -d "=" -f 2)
# 转换过期日期为时间戳
expiration_timestamp=$(date -d "$expiration_date" +%s)
# 计算剩余天数
remaining_days=$((($expiration_timestamp - $current_date) / 86400))
# 打印证书路径和剩余天数
echo "域名: $domain"
echo "证书路径: $cert_file"
echo "剩余天数: $remaining_days"
echo
else
echo "域名: $domain"
echo "证书文件不存在"
echo
fi
done
```
使用方法:
1. 将上述脚本保存为 `check_cert_by_domain.sh`
2. 使用终端进入脚本所在目录
3. 运行 `chmod +x check_cert_by_domain.sh` 给予脚本执行权限
4. 根据需要修改 `cert_path` 和 `domains` 变量,指定证书路径和需要扫描的域名列表
5. 运行 `./check_cert_by_domain.sh` 执行脚本
脚本会根据域名列表扫描对应的证书文件,并打印域名、证书路径和剩余天数。如果证书文件不存在,则会输出相应的提示信息。你可以根据实际情况修改 `cert_path` 和 `domains` 变量来指定需要扫描的证书路径和域名列表。
阅读全文