ubuntuusers.de

Benachrichtigung das backup fertig ist.

Status: Gelöst | Ubuntu-Version: Kein Ubuntu
Antworten |

Taomon Team-Icon

Supporter
Avatar von Taomon

Anmeldungsdatum:
30. Januar 2011

Beiträge: 8463

Wohnort: Digiworld

Ich möchte das wenn rsync fertig ist eine Benachrichtung durch Sprachaufzeichnung angezeigt wird basteln. Jetzt ist die backup-platte natürlich nicht immer dran.

root@Taomon:/home/alex# cat /usr/local/bin/rsync-home-benachrichtigung.sh 
#!/bin/bash 
if [ '(ps -A | grep -c rsync) = 0' ];
then /usr/bin/mpv -no-video /home/alex/Sprachaufzeichnung/backup-home-fertig.MP3 
fi

Ich möchte die Abfrage über crontab machen. wenn die Platte nicht dran ist wird dann natürlich jedesmal backup fertig abgespielt. Wie kann ich realisieren, das wenn die Platte nicht dran ist nix abgespielt wird? Ich dachte ich häng das an die unit media-debianhome.mount die erst kreiert wird wenn die Partiton über udisks2 eingebunden wird.

root@Taomon:/home/alex# systemctl status media-debianhome.mount | grep not-found | awk '{print $2}'
not-found

Also wenn diese Bedingung gegeben ist, soll mpv nix abspielen. Leider habe ich vom Skripten keine Ahnung. Wie kann ich das backen. 😳

Gruß Taomon

ChickenLipsRfun2eat Team-Icon

Anmeldungsdatum:
6. Dezember 2009

Beiträge: 12067

Hallo Taomon ☺

Anderer Ansatz: Wie startest du dein Backup? Könnte man nicht dort (udev,Script, unit, whatever) den Befehl zum notify anhängen? Spart den cronjob und die ständigen Prüfungen, ob die Platte dran ist.

Taomon Team-Icon

Supporter
(Themenstarter)
Avatar von Taomon

Anmeldungsdatum:
30. Januar 2011

Beiträge: 8463

Wohnort: Digiworld

Gestartet wird das backup-skript über eine Systemd-unit.

root@Taomon:/home/alex# cat /etc/systemd/system/backup-home-skript.service 
[Unit]
Description=backup-home-skript
BindsTo=media-debianhome.mount
RequiresMountsFor=/media/debianhome
After=media-debianhome.mount

[Service]
Type=simple
User=alex
ExecStart=/usr/local/bin/backup-home-skript
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure
RestartSec=15s

[Install]
WantedBy=media-debianhome.mount 


root@Taomon:/home/alex# 

Der +RUN Key lüppt nicht mehr mit Udev unter Systemd. die Platte wird mit udisk2 unter /media/partitonslabel eingebunden.

root@Taomon:/home/alex# cat /etc/udev/rules.d/99-Backup.rules
KERNEL=="sd*[0-9]", SUBSYSTEM=="block", GROUP="plugdev", MODE="0664", SYMLINK+="debianhome", TAG+="systemd", ENV{ID_FS_LABEL}=="debianhome", ENV{UDISKS_FILESYSTEM_SHARED}="1", ENV{SYSTEMD_WANTS}="backup-home-skript"
root@Taomon:/home/alex# 

Wobei ich mir den Symlink jetzt sparen kann.Bei mir ist das immer learning by doing. 😀

Gruß Taomon

ChickenLipsRfun2eat Team-Icon

Anmeldungsdatum:
6. Dezember 2009

Beiträge: 12067

ExecStart=/usr/local/bin/backup-home-skript

Das kannst du doch ändern und dir ein Signal schicken lassen, z.B. mit Zenity oder so. Da kannst du dir eine Startnachricht und eine Endnachricht generieren, ggf. sogar eine Fortschrittsanzeige.

Taomon Team-Icon

Supporter
(Themenstarter)
Avatar von Taomon

Anmeldungsdatum:
30. Januar 2011

Beiträge: 8463

Wohnort: Digiworld

ChickenLipsRfun2eat Nett gemeint, da mußte ich schon eine rudimntäre Ahnung von Skripten haben. die habe ich nicht. Und ist leider nicht mehr lernbar.

Gruß Taomon

ChickenLipsRfun2eat Team-Icon

Anmeldungsdatum:
6. Dezember 2009

Beiträge: 12067

Ich bin auch kein guter Scripter. Aber wenn du dein /usr/local/bin/backup-home-skript hier posten würdest, dann wird sich sicher jemand erbarmen. Versuchen würde ich es auch, aber ohne Garantien ☺

Taomon Team-Icon

Supporter
(Themenstarter)
Avatar von Taomon

Anmeldungsdatum:
30. Januar 2011

Beiträge: 8463

Wohnort: Digiworld

Da steht nur ein Befehl drin. 😕

alex@Taomon:~$ cat /usr/local/bin/backup-home-skript 
#!/bin/bash

rsync -aAXEogvrptch --exclude=/home/alex/iso-images /home/alex/* /media/debianhome/alex

Ich dachte mir das so. Wenn

alex@Taomon:~$ systemctl status backup-home-skript | grep -i active | awk  '{print $2}'
inactive

wenn diese Abfrage inactive ausgibt, beende Dich. Ansonsten mach weiter. Die Abfrage habe ich im cron untergebracht. Was auch funktioniert. Die Systemd-regel für's backup-skript selbst mußte ich noch ein wenig verändern da ich einen Schlüssel vergessen hatte.

alex@Taomon:~$ cat /etc/systemd/system/backup-home-skript.service 
[Unit]
Description=backup-home-skript 
RequiresMountsFor=/media/debianhome
After=media-debianhome.mount

[Service]
Type=simple
User=alex
ExecStart=/usr/local/bin/backup-home-skript
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure
RestartSec=15s

[Install]
WantedBy=multiuser.target 


alex@Taomon:~$ 

Hoffe das war verständlich.

Gruß Taomon

ChickenLipsRfun2eat Team-Icon

Anmeldungsdatum:
6. Dezember 2009

Beiträge: 12067

Taomon schrieb:

Da steht nur ein Befehl drin. 😕

alex@Taomon:~$ cat /usr/local/bin/backup-home-skript 
#!/bin/bash

rsync -aAXEogvrptch --exclude=/home/alex/iso-images /home/alex/* /media/debianhome/alex && zenity --info --text "Backup beendet" --title "Backup-Info"

Ich würde das so versuchen. Nach Ablauf des rsync sollte die Nachricht dann kommen. Falls diese nicht kommt, ist was schiefgelaufen. Das könnte man ggf. auch über if abfragen, wobei ich für den persönlichen Gebrauch immer davon ausgehe, dass alles klappt und sowas nicht abfrage ☺

Spart dir den Cronjob. Du kannst aber natürlich auch deine Version nehmen, wenn sie zufriedenstellen funktioniert ☺

Taomon Team-Icon

Supporter
(Themenstarter)
Avatar von Taomon

Anmeldungsdatum:
30. Januar 2011

Beiträge: 8463

Wohnort: Digiworld

Geht das auch wenn ein backup-skript als root ausgeführt wird? $HOME kann ich als user sichern. Aber System-partition nicht. Deshalb habe ich das auch so versucht zu lösen.

Danke Taomon

ChickenLipsRfun2eat Team-Icon

Anmeldungsdatum:
6. Dezember 2009

Beiträge: 12067

Theoretisch ja. Du musst dann aber den user übergeben und die $DISPLAY-Variable muss gesetzt sein.

Ich spiele da mit notify-send rum, welches du über

sudo apt install libnotify-bin

installieren kannst.

Da geht das auf jeden Fall mit

su alex -c 'notify-send "Backup-Nachricht"'

Geht mit Zenity wahrscheinlich genauso, habe ich aber noch nicht probiert.

Taomon Team-Icon

Supporter
(Themenstarter)
Avatar von Taomon

Anmeldungsdatum:
30. Januar 2011

Beiträge: 8463

Wohnort: Digiworld

Über notify geht es nicht ohne weiteres. Das habe ich schon probiert. Da auch root nicht ohne weiteres auf das $DISPLAY vom user zugreifen kann. Export hin, export her. Da brauch ich schon die Session-pid vom User. Noch komplizierter.

Gruß Taomon

ChickenLipsRfun2eat Team-Icon

Anmeldungsdatum:
6. Dezember 2009

Beiträge: 12067

Ich gehe mal davon aus, dein display ist :0

Dann wäre der Eintrag

su alex -c 'DISPLAY=:0 notify-send "Backup-Nachricht"'

Bei mir (Kubuntu Yak) funktioniert das so auf jeden Fall.

Taomon Team-Icon

Supporter
(Themenstarter)
Avatar von Taomon

Anmeldungsdatum:
30. Januar 2011

Beiträge: 8463

Wohnort: Digiworld

wenn du dich in einer User-session mit su zu root wirst, bleibt, die Umgebung vom User erhalten.

root@Taomon:/home/alex# env
XDG_VTNR=7
XDG_SESSION_ID=1
SSH_AGENT_PID=1317
XDG_GREETER_DATA_DIR=/var/lib/lightdm/data/alex
GLADE_PIXMAP_PATH=:
GPG_AGENT_INFO=/tmp/gpg-9ZL6kB/S.gpg-agent:1335:1
XDG_MENU_PREFIX=xfce-
SHELL=/bin/bash
TERM=xterm
XDG_SESSION_COOKIE=84876d350fa0dd8b520fd47e0000000b-1479563560.634685-223052045
USER=root
GLADE_MODULE_PATH=:
XDG_SESSION_PATH=/org/freedesktop/DisplayManager/Session0
XDG_SEAT_PATH=/org/freedesktop/DisplayManager/Seat0
SSH_AUTH_SOCK=/tmp/ssh-sCXbheaPgAgj/agent.1290
SESSION_MANAGER=local/Taomon:@/tmp/.ICE-unix/1329,unix/Taomon:/tmp/.ICE-unix/1329
XDG_CONFIG_DIRS=/etc/xdg
MAIL=/var/mail/root
DESKTOP_SESSION=xfce
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
PWD=/home/alex
LANG=de_DE.UTF-8
GDMSESSION=xfce
SHLVL=4
HOME=/root
XDG_SEAT=seat0
LOGNAME=root
DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-8hzsrRvcjA,guid=1c309f921dff5f4070e4997058302410
XDG_DATA_DIRS=/usr/share/xfce4:/usr/local/share/:/usr/share/:/usr/share
DISPLAY=:0.0
XDG_RUNTIME_DIR=/run/user/1000
GLADE_CATALOG_PATH=:
XDG_CURRENT_DESKTOP=XFCE
CACA_DRIVER=ncurses
XAUTHORITY=/home/alex/.Xauthority
_=/usr/bin/env
root@Taomon:/home/alex# 

Deshalb, denke ich geht das dann auch.

Wenn ich aber ein Skript mit Rootrechten direkt laufen lasse eher nicht.

gruß Taomon

edit: zumindest krieg ich unter Debian das nicht hin.

Taomon Team-Icon

Supporter
(Themenstarter)
Avatar von Taomon

Anmeldungsdatum:
30. Januar 2011

Beiträge: 8463

Wohnort: Digiworld

So, jetzt weiß ich wie es nicht geht.

alex@Taomon:/usr/local/bin$ cat rsync-home-benachrichtigung.sh 
#!/bin/bash

if  [ '(systemctl status backup-home-skript | grep -i active | awk $2)' != active ];
then
exit  
else 
[ '(ps -A | grep -c rsync) = 0' ];
/usr/bin/aplay -q "/home/alex/Musik/Wave/game-over.wav" 
fi
alex@Taomon:/usr/local/bin$ 

Jetzt lass ich mal den Cron-Job mitloggen. Mal schauen was beim nächsten Backup rauskommt.

Gruß Taomon

ChickenLipsRfun2eat Team-Icon

Anmeldungsdatum:
6. Dezember 2009

Beiträge: 12067

Taomon schrieb:

Wenn ich aber ein Skript mit Rootrechten direkt laufen lasse eher nicht.

Vermutlich, weil die Rootumgebung das Display nicht hat. Kannst ja mal ein "echo $DISPLAY > /root/display.info" mitlaufen lassen. Wenn da nix drin steht, weißt du Bescheid.

Antworten |