#!/bin/bash set -euo pipefail # ----------------------------- # Auswahl: PVE oder PBS # ----------------------------- echo "Welche Proxmox-Installation möchtest du konfigurieren?" echo "1) Proxmox VE" echo "2) Proxmox Backup Server" read -rp "Bitte auswählen (1 oder 2): " choice case "$choice" in 1) TYPE="PVE" NOTIF_CFG="/etc/pve/notifications.cfg" PRIV_NOTIF_CFG="/etc/pve/priv/notifications.cfg" USER_DEFAULT="MH-PVE02@vmd55888.de" ;; 2) TYPE="PBS" NOTIF_CFG="/etc/proxmox-backup/notifications.cfg" PRIV_NOTIF_CFG="/etc/proxmox-backup/notifications-priv.cfg" USER_DEFAULT="MH-PBS01@vmd55888.de" ;; *) echo "Ungültige Auswahl. Abbruch." exit 1 ;; esac # ----------------------------- # Backup-Funktion # ----------------------------- backup_file() { local file=$1 if [ -f "$file" ]; then local bak="${file}.bak.$(date +%Y%m%d%H%M%S)" cp "$file" "$bak" echo "Backup erstellt: $bak" fi } # ----------------------------- # Pflichtfeld-Reader # $1 = Prompt # $2 = Variablenname # $3 = Optionaler Default # ----------------------------- read_required() { local prompt="$1" local varname="$2" local default="${3:-}" local input while true; do if [[ -n "$default" ]]; then read -rp "$prompt [$default]: " input input=${input:-$default} else read -rp "$prompt: " input fi if [[ -n "$input" ]]; then printf -v "$varname" '%s' "$input" break fi echo "❌ Eingabe darf nicht leer sein!" done } # ----------------------------- # Backups # ----------------------------- backup_file "$NOTIF_CFG" backup_file "$PRIV_NOTIF_CFG" echo echo "Bitte die SMTP Notification Konfiguration für $TYPE eingeben:" echo "(Alle Felder sind Pflicht – Enter übernimmt ggf. den Default)" echo # ----------------------------- # Eingaben mit Vorlagen # ----------------------------- read_required "Author (z.B. MH-PVE02 | MAIERHOME H33)" AUTHOR read_required "From-Address (z.B. MH-PVE02@vmd55888.de)" FROMADDR read_required "Empfänger-Mailadresse (mailto, z.B. admin@vmd55888.de)" MAILTO "admin@vmd55888.de" read_required "SMTP Server (z.B. mail.vmd55888.de)" SERVER "mail.vmd55888.de" read_required "SMTP Port (z.B. 587)" PORT "587" read_required "Modus (starttls/ssl/none)" MODE "starttls" read_required "SMTP Benutzername (z.B. $USER_DEFAULT)" USERNAME "$USER_DEFAULT" # Passwort (Pflichtfeld, versteckt) while true; do read -rsp "SMTP Passwort: " SMTP_PASS echo [[ -n "$SMTP_PASS" ]] && break echo "❌ Passwort darf nicht leer sein!" done # ----------------------------- # notifications.cfg schreiben # ----------------------------- cat > "$NOTIF_CFG" << EOF sendmail: mail-to-root comment Send mails to root@pam's email address disable true mailto-user root@pam matcher: default-matcher comment Route all notifications to mail-to-root mode all target mailout smtp: mailout author $AUTHOR from-address $FROMADDR mailto $MAILTO mailto-user root@pam mode $MODE port $PORT server $SERVER username $USERNAME EOF # ----------------------------- # priv/notifications-priv.cfg schreiben # ----------------------------- cat > "$PRIV_NOTIF_CFG" << EOF smtp: mailout password $SMTP_PASS EOF echo echo "✅ $TYPE Notification Konfiguration neu geschrieben. Bitte WebUI prüfen."