run_keepass_sync.sh
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
run_keepass_sync.sh [2021/02/15 10:48] – Scriptcode aktuaisiert dwadmin | run_keepass_sync.sh [2021/05/27 09:38] (aktuell) – Scriptcode aktuaisiert dwadmin | ||
---|---|---|---|
Zeile 5: | Zeile 5: | ||
Außerdem ist für das Funktionieren des Scriptes auch ein ssh-Key **ohne** Passwort nötig, sowie eine eigene Configdatei. Ggf. mit dem Kommando // | Außerdem ist für das Funktionieren des Scriptes auch ein ssh-Key **ohne** Passwort nötig, sowie eine eigene Configdatei. Ggf. mit dem Kommando // | ||
+ | Desweiteren sollte eine PNG-Grafikdatei für die Anzeige im Hauptdialog vorhanden sein (Größe 128x128 Pixel) die in der Variablen $LOGO_FILE hinterlegt ist. | ||
+ | |||
+ | \\ | ||
+ | \\ | ||
+ | |||
+ | ====== Konfigurationsdateien ====== | ||
+ | \\ | ||
+ | RSA Key ohne Passwort generieren (2x ENTER drücken) | ||
+ | < | ||
+ | $ ssh-keygen -t rsa -f / | ||
+ | </ | ||
+ | |||
+ | SSH Config erstellen | ||
<code bash $HOME/ | <code bash $HOME/ | ||
# fuer Shellscripte mit passwortloesem Zugriff auf Remoterechner | # fuer Shellscripte mit passwortloesem Zugriff auf Remoterechner | ||
Zeile 16: | Zeile 29: | ||
</ | </ | ||
+ | SSH Keys auf den Remoterechner transferieren. | ||
< | < | ||
$ ssh-copy-id -f < | $ ssh-copy-id -f < | ||
</ | </ | ||
+ | \\ | ||
+ | \\ | ||
- | Aufruf des Scriptes | + | ====== |
+ | \\ | ||
< | < | ||
# Algemein: | # Algemein: | ||
Zeile 29: | Zeile 46: | ||
</ | </ | ||
\\ | \\ | ||
+ | \\ | ||
+ | |||
+ | ====== Screenshots ====== | ||
+ | |||
+ | {{screenshot_run_keepass_sync_main.png|Hauptdialog}} | ||
+ | |||
+ | {{screenshot_run_keepass_sync_01.png|Forschrittsnzeige Schritt 1}} | ||
+ | |||
+ | {{screenshot_run_keepass_sync_02.png|Forschrittsnzeige Schritt 2}} | ||
+ | |||
+ | {{screenshot_run_keepass_sync_03.png|Forschrittsnzeige Schritt 3}} | ||
+ | |||
+ | {{screenshot_run_keepass_sync_04.png|Forschrittsnzeige Schritt 4}} | ||
+ | |||
+ | {{screenshot_run_keepass_sync_05.png|Forschrittsnzeige Schritt 5}} | ||
+ | |||
+ | {{screenshot_run_keepass_sync_error_01.png|Fehlermeldung 1}} | ||
+ | |||
+ | {{screenshot_run_keepass_sync_error_02.png|Fehlermeldung 2}} | ||
+ | |||
+ | {{screenshot_run_keepass_sync_error_03.png|Fehlermeldung 3}} | ||
+ | |||
+ | {{screenshot_run_keepass_sync_success.png|Passives Popup}} | ||
+ | |||
+ | \\ | ||
+ | \\ | ||
+ | |||
+ | ====== Scriptcode ====== | ||
<code bash run_keepass_sync.sh> | <code bash run_keepass_sync.sh> | ||
Zeile 37: | Zeile 82: | ||
####################### | ####################### | ||
# | # | ||
- | USER_TMP_DIR=" | + | USER_TMP_DIR=" |
- | KEEPASS_DIR=" | + | KEEPASS_DIR=" |
KEEPASS_BACKUP_DIR=" | KEEPASS_BACKUP_DIR=" | ||
KEEPASS_FILE=" | KEEPASS_FILE=" | ||
- | KEEPASS_LOGFILE=/ | + | KEEPASS_LOGFILE=$HOME/ |
SOURCE_HOST=$(hostname) | SOURCE_HOST=$(hostname) | ||
DESTINATION_HOST=$1 | DESTINATION_HOST=$1 | ||
- | DUMMY_FILE=" | + | DUMMY_FILE=" |
+ | LOGO_FILE=" | ||
# | # | ||
# Fuer einen passwortlosen ssh-Zugang ist ein eigener rsa-Key erforderlich | # Fuer einen passwortlosen ssh-Zugang ist ein eigener rsa-Key erforderlich | ||
# (id_rsa_pwdless* und config.pwdless), | # (id_rsa_pwdless* und config.pwdless), | ||
# | # | ||
- | SSH_CONFIG_FILE=" | + | SSH_CONFIG_FILE=" |
# | # | ||
################ | ################ | ||
Zeile 60: | Zeile 106: | ||
if [ ! -d " | if [ ! -d " | ||
then | then | ||
- | mkdir $USER_TMP_DIR | + | mkdir |
fi | fi | ||
Zeile 69: | Zeile 115: | ||
touch $KEEPASS_LOGFILE | touch $KEEPASS_LOGFILE | ||
print_timestamp start | print_timestamp start | ||
- | echo " | + | echo " |
else | else | ||
touch $KEEPASS_LOGFILE | touch $KEEPASS_LOGFILE | ||
- | echo " | + | echo " |
fi | fi | ||
} | } | ||
Zeile 132: | Zeile 178: | ||
# Test auf Erreichbarkeit des Zielrechners | # Test auf Erreichbarkeit des Zielrechners | ||
echo " | echo " | ||
- | scp -F $SSH_CONFIG_FILE $DUMMY_FILE $DESTINATION_HOST: | + | echo " |
+ | scp -F $SSH_CONFIG_FILE $DUMMY_FILE $DESTINATION_HOST:/ | ||
RC=$? | RC=$? | ||
if [ " | if [ " | ||
Zeile 148: | Zeile 195: | ||
echo " | echo " | ||
echo " | echo " | ||
- | echo " | + | echo " |
+ | echo " | ||
echo " | echo " | ||
echo " | echo " | ||
Zeile 158: | Zeile 206: | ||
{ | { | ||
# Synchronisation anstossen via rsync | # Synchronisation anstossen via rsync | ||
- | echo "" >> | + | echo "[$(date ' |
- | echo "Synchronistaion der Passwort-Datenbank $KEEPASS_FILE nach Zielrechner $DESTINATION_HOST startet ..." >> $KEEPASS_LOGFILE | + | |
rsync -v -r -c -g -p -t -l -H -b --backup-dir=$KEEPASS_BACKUP_DIR --delete --stats --progress | rsync -v -r -c -g -p -t -l -H -b --backup-dir=$KEEPASS_BACKUP_DIR --delete --stats --progress | ||
RC=$? | RC=$? | ||
Zeile 168: | Zeile 215: | ||
show_passive_popup() | show_passive_popup() | ||
{ | { | ||
- | # Popup anzeigen bei erfolgreicher Synchronisation | + | # Popup anzeigen bei (nicht)erfolgreicher Synchronisation |
if [ " | if [ " | ||
then | then | ||
Zeile 181: | Zeile 228: | ||
show_host() | show_host() | ||
{ | { | ||
- | # Ermittlung von Quell- und Zielrechner für die Ausgabe in der kdialog-Box | + | # Ermittlung |
if [ " | if [ " | ||
then | then | ||
Zeile 211: | Zeile 258: | ||
check_proc() | check_proc() | ||
{ | { | ||
- | # Testen ob Keepassxc auf den Rechnern läuft | + | # Testen ob Keepassxc auf dem lokalen |
PROC_ID_LOCAL=$(ps -U $USER|egrep keepassxc$ |awk ' | PROC_ID_LOCAL=$(ps -U $USER|egrep keepassxc$ |awk ' | ||
if [ " | if [ " | ||
Zeile 221: | Zeile 268: | ||
fi | fi | ||
+ | # Testen ob Keepassxc auf dem entfernten Rechnern läuft | ||
PROC_ID_REMOTE=$(ssh -F $SSH_CONFIG_FILE $DESTINATION_HOST ps -U $USER | egrep keepassxc$ | awk ' | PROC_ID_REMOTE=$(ssh -F $SSH_CONFIG_FILE $DESTINATION_HOST ps -U $USER | egrep keepassxc$ | awk ' | ||
if [ " | if [ " | ||
Zeile 232: | Zeile 280: | ||
print_timestamp() | print_timestamp() | ||
{ | { | ||
+ | # Timestamp (Start und Ende) ins Logfile schreiben | ||
TS_VALUE=$1 | TS_VALUE=$1 | ||
if [ " | if [ " | ||
then | then | ||
- | echo " | + | echo " |
elif [ " | elif [ " | ||
then | then | ||
- | echo " | + | echo " |
fi | fi | ||
} | } | ||
Zeile 244: | Zeile 293: | ||
init_progressbar() | init_progressbar() | ||
{ | { | ||
+ | # initieren der Fortschrittsanzeige | ||
progress=$(kdialog --title " | progress=$(kdialog --title " | ||
qdbus $progress showCancelButton false | qdbus $progress showCancelButton false | ||
Zeile 250: | Zeile 300: | ||
run_progressbar() | run_progressbar() | ||
{ | { | ||
+ | # Fortschrittsanzeige aktualisieren bei jedem Schritt | ||
VALUE=" | VALUE=" | ||
TEXT=" | TEXT=" | ||
Zeile 258: | Zeile 309: | ||
close_progressbar() | close_progressbar() | ||
{ | { | ||
+ | # Fortschrittsanzeige am Scriptende schließen | ||
qdbus $progress close > /dev/null | qdbus $progress close > /dev/null | ||
} | } | ||
Zeile 266: | Zeile 318: | ||
# | # | ||
init_progressbar | init_progressbar | ||
- | run_progressbar " | + | run_progressbar " |
- | #qdbus $progress Set "" | + | |
- | #qdbus $progress setLabelText "1. Schritt: | + | |
sleep 2 | sleep 2 | ||
create_log | create_log | ||
Zeile 287: | Zeile 337: | ||
fi | fi | ||
- | run_progressbar " | + | run_progressbar " |
- | #qdbus $progress Set "" | + | |
- | #qdbus $progress setLabelText "2. Schritt: | + | |
- | #sleep 2 | + | |
check_dest_host | check_dest_host | ||
if [ " | if [ " | ||
Zeile 301: | Zeile 348: | ||
run_progressbar " | run_progressbar " | ||
- | #qdbus $progress Set "" | ||
- | #qdbus $progress setLabelText "3. Schritt: Prüfe ob KeepassXC auf Quell- oder Zielrechner läuft" | ||
check_proc | check_proc | ||
+ | # Auf Rückgabewerte der Funktion check_proc mit entsprechenden Dialogboxen reagieren | ||
if [ " | if [ " | ||
then | then | ||
Zeile 318: | Zeile 364: | ||
fi | fi | ||
- | run_progressbar " | + | run_progressbar " |
- | #qdbus $progress Set "" | + | |
- | #qdbus $progress setLabelText "4. Schritt: | + | |
make_backupdir | make_backupdir | ||
check_keepass_db | check_keepass_db | ||
+ | # Auf Rückgabewert der Funktion check_keepass_db reagieren | ||
if [ " | if [ " | ||
then | then | ||
Zeile 333: | Zeile 378: | ||
show_host | show_host | ||
- | SYNC_DIALOG=$(kdialog --title " | + | # Hauptdialogbox vor der Synchronisation der Passwort-Datenbank |
+ | #SYNC_DIALOG=$(kdialog --title " | ||
+ | |||
+ | kdialog --title " | ||
SYNC_DIALOG_CHECK=$? | SYNC_DIALOG_CHECK=$? | ||
run_progressbar " | run_progressbar " | ||
- | #qdbus $progress Set "" | + | # Auf Mausklicks in der Hauptdialogbox reagieren (JA, NEIN, ABBRECHEN) |
- | #qdbus $progress setLabelText "5. Schritt: | + | |
if [ " | if [ " | ||
then | then |
run_keepass_sync.sh.1613382524.txt.gz · Zuletzt geändert: 2021/02/15 10:48 von dwadmin