58 lines
2.3 KiB
Bash
58 lines
2.3 KiB
Bash
#!/bin/bash
|
|
# batch_imapsync.sh - Führt IMAP-Sync für alle User im Hintergrund aus
|
|
# Format der CSV: email@domain.com,SecretPassword123
|
|
|
|
HOST1=$1
|
|
HOST2=$2
|
|
CSV_FILE=$3
|
|
|
|
if [ -z "$HOST1" ] || [ -z "$HOST2" ] || [ -z "$CSV_FILE" ]; then
|
|
echo "Usage: $0 <source-host> <target-host> <users.csv>"
|
|
echo "Beispiel: $0 secure.emailsrvr.com 147.93.132.244 stxmaterials.csv"
|
|
exit 1
|
|
fi
|
|
|
|
# ======================================================================
|
|
# Die eigentliche Sync-Funktion (wird in den Hintergrund geschickt)
|
|
# ======================================================================
|
|
run_sync_jobs() {
|
|
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
|
|
LOG_DIR="sync_logs_$TIMESTAMP"
|
|
mkdir -p "$LOG_DIR"
|
|
|
|
echo "Beginne Sync-Lauf am $(date)" > "batch_master_${TIMESTAMP}.log"
|
|
|
|
while IFS=, read -r email password; do
|
|
email=$(echo "$email" | tr -d '\r' | xargs)
|
|
password=$(echo "$password" | tr -d '\r' | xargs)
|
|
|
|
[ -z "$email" ] && continue
|
|
|
|
LOGFILE="$LOG_DIR/imapsync_${email}.log"
|
|
echo "[$(date)] Syncing $email -> $LOGFILE" >> "batch_master_${TIMESTAMP}.log"
|
|
|
|
# Führe Docker imapsync für den aktuellen User aus
|
|
docker run --rm gilleslamiral/imapsync imapsync \
|
|
--host1 "$HOST1" --user1 "$email" --password1 "$password" --ssl1 \
|
|
--host2 "$HOST2" --user2 "$email" --password2 "$password" --ssl2 \
|
|
--automap > "$LOGFILE" 2>&1 < /dev/null
|
|
|
|
done < "$CSV_FILE"
|
|
|
|
echo "Alle Sync-Jobs beendet am $(date)" >> "batch_master_${TIMESTAMP}.log"
|
|
}
|
|
|
|
# ======================================================================
|
|
# Skript-Start: Entkopplung vom Terminal
|
|
# ======================================================================
|
|
echo "🚀 Starte Batch-IMAP-Sync im Hintergrund..."
|
|
|
|
# Rufe die Funktion auf, leite alle restlichen Ausgaben ins Nichts und schicke sie in den Hintergrund (&)
|
|
run_sync_jobs </dev/null >/dev/null 2>&1 &
|
|
|
|
echo "✅ Der Job läuft jetzt autark im Hintergrund (sequenziell)."
|
|
echo "Du kannst das SSH-Terminal jetzt bedenkenlos schließen!"
|
|
echo "Überwache den Gesamtfortschritt mit:"
|
|
echo " tail -f batch_master_*.log"
|
|
echo "Oder die Details eines einzelnen Postfachs mit:"
|
|
echo " tail -f sync_logs_*/imapsync_<email>.log" |