2024-03-17 13:51:53 +00:00
#!/bin/bash
# Script Name: cloudpanel-autorenew-letsencrypt-certs.v1.sh
# Beschreibung: Erneuert automatisch Letsencrypt Zertifikate in Cloudpanel
# Aufruf: bash ./cloudpanel-autorenew-letsencrypt-certs.v1.sh
# Autor: Patrick Asmus
# Web: https://www.media-techport.de
# Git-Reposit.: https://git.media-techport.de/scriptos/cloudpanel-autorenew-letsencrypt-certs.git
2024-03-18 09:59:07 +00:00
# Version: 1.1.1
2024-03-18 09:51:17 +00:00
# Datum: 18.03.2024
2024-03-18 09:59:07 +00:00
# Modifikation: Emailfunktion um Ansendername erweitert
2024-03-17 13:51:53 +00:00
#####################################################
# Variablen
2024-03-18 09:59:07 +00:00
hostname = $( hostname)
2024-03-17 13:51:53 +00:00
config_path = "/etc/nginx/sites-enabled/"
log_dir = "/var/log/script-logs"
log_file = " $log_dir /cloudpanel-letsencrypt-renew.log "
2024-03-18 09:51:17 +00:00
email_from = "noreply@media-techport.de"
2024-03-18 09:59:07 +00:00
email_from_name = " $hostname | CloudPanel Server "
email_to = "system@media-techport.de"
2024-03-18 09:51:17 +00:00
email_subject = " Letsencrypt Zertifikate wurden auf $HOSTNAME erneuert "
2024-03-17 13:51:53 +00:00
# Leite die Ausgaben in das Log-File um
mkdir -p $log_dir
exec > >( tee -i " $log_file " )
exec 2>& 1
# Funktion zur Erneuerung/Erstellung von Zertifikaten
renew_certificate( ) {
local domain = $1
echo " Erneuere/Erstelle Zertifikat für: $domain "
bash /usr/bin/clpctl lets-encrypt:install:certificate --domainName= $domain
}
# Extrahiere Domains aus den Konfigurationsdateien und führe Zertifikatserneuerung aus
for file in $config_path *; do
domains = $( grep "server_name" $file | awk '{print $2}' | tr -d ';' | sed 's/^www\.//' | tr -d '\r' )
for domain in $domains ; do
if [ " $domain " != "_" ] ; then
renew_certificate $domain
fi
done
done
2024-03-18 09:51:17 +00:00
# Senden einer E-Mail mit dem Logfile als Anhang
2024-03-18 09:59:07 +00:00
echo " Die Letsencrypt Zertifikate wurden auf $HOSTNAME erneuert. Bitte überprüfe das angehängte Log für Details. " | mail -a " $log_file " -s " $email_subject " -r " \" $email_from_name \" < $email_from > " " $email_to "