#!/bin/bash # Функция проверки локального сертификата check_local_cert() { local cert_file=$1 local days_to_check=$2 if [[ ! -f "$cert_file" ]]; then echo "Ошибка: Файл сертификата '$cert_file' не найден." return 1 fi # Получаем дату истечения сертификата expiry_date=$(openssl x509 -in "$cert_file" -noout -dates | grep "notAfter=" | cut -d= -f2) if [[ -z "$expiry_date" ]]; then echo "Ошибка: не удалось получить дату истечения сертификата." return 1 fi # Преобразуем дату истечения в UNIX-время expiry_unix=$(date -d "$expiry_date" +%s) # Текущая дата в UNIX-времени current_unix=$(date +%s) # Вычисляем разницу между текущей датой и датой истечения days_left=$(( ($expiry_unix - $current_unix) / 86400 )) if ((days_left <= 0)); then echo "Сертификат '$cert_file' истек!" return 0 elif ((days_left <= days_to_check)); then echo "Предупреждение: Сертификат '$cert_file' истекает через $days_left дней." return 0 else echo "Сертификат '$cert_file' действителен ещё $days_left дней." return 1 fi } # Проверка первого сертификата и запуск соответствующего сценария обновления check_first_cert() { local first_cert="/etc/letsencrypt/live/yalarba.ru/cert.pem" local first_script="/opt/renewYalarbaCert.sh" local warning_days=2 if check_local_cert "$first_cert" "$warning_days"; then echo "Запускаю обновление первого сертификата..." "$first_script" fi } # Проверка второго сертификата и запуск соответствующего сценария обновления check_second_cert() { local second_cert="/etc/letsencrypt/live/valitovgaziz.ru/cert.pem" local second_script="/opt/renewValitovGazizCert.sh" local warning_days=2 if check_local_cert "$second_cert" "$warning_days"; then echo "Запускаю обновление второго сертификата..." "$second_script" fi } # Основная функция для последовательной проверки обоих сертификатов main() { check_first_cert check_second_cert } # Запуск основной функции main