remmina_sync.sh hinzugefügt

This commit is contained in:
sebastian.zell 2025-01-02 13:03:21 +00:00
parent d618b765b1
commit bbbc865663
1 changed files with 127 additions and 0 deletions

127
remmina_sync.sh Normal file
View File

@ -0,0 +1,127 @@
#!/bin/bash
# Konfiguration
GIT_SERVER="gitea.zell-cloud.de"
GIT_PORT="3000"
GIT_USER="sebastian.zell"
REPO_NAME="remmina"
LOCAL_DIR="$HOME/.local/share/remmina"
REMOTE_REPO="git@gitea.zell-cloud.de:${GIT_USER}/${REPO_NAME}.git"
CRON_FILE="/etc/cron.d/remmina_sync"
# Funktion: SSH-Schlüssel erstellen und konfigurieren
setup_ssh_key() {
echo "Prüfe, ob ein SSH-Schlüssel existiert..."
if [ ! -f "$HOME/.ssh/id_ed25519" ]; then
echo "Kein SSH-Schlüssel gefunden. Erstelle einen neuen..."
ssh-keygen -t ed25519 -C "$GIT_USER@gitea.zell-cloud.de" -f "$HOME/.ssh/id_ed25519" -N ""
chmod 600 "$HOME/.ssh/id_ed25519"
chmod 644 "$HOME/.ssh/id_ed25519.pub"
echo "SSH-Schlüssel erfolgreich erstellt."
echo "Öffentlicher Schlüssel (bitte in Gitea einfügen):"
cat "$HOME/.ssh/id_ed25519.pub"
echo "Gehe zu Gitea -> Profil -> Einstellungen -> SSH-Schlüssel und füge den Schlüssel ein."
read -rp "Drücke ENTER, sobald der Schlüssel hinzugefügt wurde, um fortzufahren."
else
echo "SSH-Schlüssel bereits vorhanden."
fi
# SSH-Agent starten und Schlüssel hinzufügen
eval "$(ssh-agent -s)"
ssh-add "$HOME/.ssh/id_ed25519"
echo "SSH-Schlüssel wurde dem SSH-Agent hinzugefügt."
}
# Funktion: Repository erstellen falls nicht vorhanden
setup_git_repo() {
echo "Prüfe, ob Git-Repository existiert..."
if [ ! -d "$LOCAL_DIR/.git" ]; then
echo "Kein lokales Repository gefunden. Initialisiere..."
mkdir -p "$LOCAL_DIR"
cd "$LOCAL_DIR"
git init
git checkout -b main
touch README.md
git add README.md
git commit -m "Initial commit"
git remote add origin "$REMOTE_REPO"
git push -u origin main
else
echo "Lokales Repository vorhanden."
fi
}
# Funktion: Dateien synchronisieren
sync_git_repo() {
echo "Synchronisiere Repository..."
cd "$LOCAL_DIR" || exit
git fetch origin
echo "Änderungen im Remote-Repository laden..."
git diff --name-status origin/main || echo "Keine Änderungen im Remote-Repository."
git reset --hard origin/main
echo "Lade Änderungen hoch..."
git add .
git commit -m "Automatische Synchronisation" || echo "Nichts zu committen."
git push origin main
echo "Synchronisation abgeschlossen."
}
# Funktion: Cron-Job einrichten
setup_cron_job() {
echo "Richte Cron-Job ein..."
CRON_CMD="0 * * * * $USER $(which bash) $HOME/remmina_sync.sh > /dev/null 2>&1"
echo "$CRON_CMD" | crontab -
echo "Cron-Job eingerichtet."
}
# Funktion: Remmina-Hook einrichten
setup_remmina_hook() {
echo "Richte Remmina-Hook ein..."
HOOK_SCRIPT="$LOCAL_DIR/sync_remmina_hook.sh"
echo "#!/bin/bash" > "$HOOK_SCRIPT"
echo "$(which bash) $HOME/remmina_sync.sh" >> "$HOOK_SCRIPT"
chmod +x "$HOOK_SCRIPT"
echo "Remmina-Hook eingerichtet: $HOOK_SCRIPT"
}
# Menü anzeigen
show_menu() {
echo "Bitte wähle eine Option:"
echo "1) SSH-Schlüssel einrichten"
echo "2) Einmalige Synchronisation"
echo "3) Cron-Job einrichten"
echo "4) Remmina-Hook einrichten"
echo "5) Git-Repository erstellen"
echo "6) Beenden"
read -rp "Deine Auswahl: " choice
case $choice in
1)
setup_ssh_key
;;
2)
sync_git_repo
;;
3)
setup_cron_job
;;
4)
setup_remmina_hook
;;
5)
setup_git_repo
;;
6)
echo "Beendet."
exit 0
;;
*)
echo "Ungültige Auswahl."
show_menu
;;
esac
}
# Hauptablauf
show_menu