#!/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) expiry_unix=$(date -D "%b %d %H:%M:%S %Y %Z" -d "$expiry_date" +%s 2>/dev/null) # Текущая дата в 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=5 if check_local_cert "$first_cert" "$warning_days"; then echo "Запускаю обновление сертификата yalarba.ru" "$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=5 if check_local_cert "$second_cert" "$warning_days"; then echo "Запускаю обновление сертификата valitovgaziz.ru" "$second_script" fi } # Проверка сертификата и запуск соответствующего сценария обновления check_third_cert() { local third_cert="/etc/letsencrypt/live/easysite102.ru/cert.pem" local third_script="/opt/renewValitovGazizCert.sh" local warning_days=5 if check_local_cert "$third_cert" "$warning_days"; then echo "Запускаю обновление сертификата easysite102.ru" "$third_script" fi } # Проверка сертификата и запуск соответствующего сценария обновления check_forth_cert() { local forth_cert="/etc/letsencrypt/live/xn--80abahjtcfl5d0a8di.xn--p1ai/cert.pem" local forth_script="/opt/renewBegushiyBashkir.sh" local warning_days=5 if check_local_cert "$forth_cert" "$warning_days"; then echo "Запускаю обновление сертификата для бегущийбашкир.рф" "$forth_script" fi } check_fifth_cert() { local fifth_cert="/etc/letsencrypt/live/begushiybashkir.ru/cert.pem" local fifth_script="/opt/renewBegushiyBashkirLatin.sh" local warning_days=5 if check_local_cert "$fifth_cert" "$warning_days"; then echo "Запускаю обновление сертификата для begushiybashkir.ru" "$fifth_script" fi } # Основная функция для последовательной проверки обоих сертификатов main() { check_first_cert check_second_cert check_third_cert check_forth_cert check_fifth_cert } # Запуск основной функции main