Taomon
Supporter
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
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
Supporter
(Themenstarter)
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
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
Supporter
(Themenstarter)
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
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
Supporter
(Themenstarter)
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
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
Supporter
(Themenstarter)
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
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
Supporter
(Themenstarter)
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
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
Supporter
(Themenstarter)
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
Supporter
(Themenstarter)
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
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.
|