Hallo,
hatte mir damals ein backup-script gesucht was ich einfach für mich anpassen konnte und hatte dieses gefunden.
https://www.bitblokes.de/automatische-datensicherung-backup-script-mit-rsync-bei-einstecken-einer-externen-festplatte/ (https://www.bitblokes.de/automatische-datensicherung-backup-script-mit-rsync-bei-einstecken-einer-externen-festplatte/)
Das script liegt in/root und wird über cron gestartet.
#!/bin/bash
#Juergen Donauer
#http://www.bitblokes.de
#Freeware!
#Benutzung auf eigene Gefahr!
notify_me() {
ALL_USER="$(users | sort)"
echo Desktop-Message to: $ALL_USER
for USER_TMP in $ALL_USER; do
if [ "$USER_TMP" = "$USER_LAST" ]; then
#if user already notified, continue
continue
fi
su $USER_TMP -c "XAUTHORITY=/home/$USER_TMP/.Xauthority DISPLAY=:0 notify-send $1 $2"
#save last username to avoid double notification
USER_LAST=$USER_TMP
done
}
########## Konfiguration ############
#UUID="42d23002-497e-4ed9-9697-057a643108b8" #ist durch die eigene UUID zu ersetzen
#UUID="59BC624820D7C496"
UUID="EE9063009062CF21"
CHECK_DISC="/dev/disk/by-uuid/$UUID"
DATE=`/bin/date +%Y%m%d`
CHECK_DATE_DIR="/root" #Verzeichnis der Datum-Steuerdatei und temporäres Einbinden der Backup-Platte
BACKUP_DIR_MEDIA="backup" #Mounte die Backup-Platte da hin
BACKUP_DIR="$CHECK_DATE_DIR/$BACKUP_DIR_MEDIA" #Backup-Verzeichnis, in dem Fall root der Backup-Platte
DATE_FILE="$CHECK_DATE_DIR/$DATE.date" #Datum-Steuerdatei, ob Backup schon durchgeführt wurde
CHECK_RSYNC=`ps -aef | grep -v grep | grep rsync | wc -l`
CHECK_MOUNT=`df -h | awk '{print $6}' | grep $BACKUP_DIR_MEDIA | wc -l`
SOURCE_DIR="/home/"
#####################################
/bin/umount $CHECK_DISC
if [ ! -d $CHECK_DATE_DIR/$BACKUP_DIR_MEDIA ]; then
/bin/mkdir $CHECK_DATE_DIR/$BACKUP_DIR_MEDIA
fi
if [ $CHECK_RSYNC = 0 ]; then #wenn kein anderer rsync-Prozess läuft, dann leg los
if [ -e $CHECK_DISC ]; then
if [ $CHECK_MOUNT = 0 ]; then
if [ ! -f $DATE_FILE ]; then
/bin/mount UUID=$UUID $CHECK_DATE_DIR/$BACKUP_DIR_MEDIA
sleep 5
rm -f $CHECK_DATE_DIR/*.date
notify_me "Backup\-Platte\ erkannt" "starte\ Datensicherung\ \(ich\ sag\ es\ Dir,\ wenn\ ich\ fertig\ bin\!\)"
/usr/bin/rsync -av --safe-links --delete --ignore-errors $SOURCE_DIR $BACKUP_DIR #macht nur einen Testlauf. Für den Ernstfall -avn zu -av ändern
/bin/sync
/usr/bin/touch $DATE_FILE
/bin/umount /dev/disk/by-uuid/$UUID
else
notify_me "Backup\ heute\ schon\ durchgefuehrt" "Du\ kannst\ die\ Festplatte\ nun\ abstecken"
fi
fi
fi
fi
Seit längerem erscheinen die entsprechenden Info-Fenster nicht mehr. Erst dachte ich, das wird sich mit weiteren full-upgrades wieder von selbst "heilen" , leider nicht. Das backup wird ausgefüht, nur die notify wird nicht angezeigt.
Nun habe ich die letzten beiden Wochenenden damit verbracht eine Lösung zu finden, leider ohne Erfolg. >:(
Nun suche ich hier Hilfe für mein Problem und hoffe, hier die Lösung oder Denkanstoß zu finden
MfG Detlef
Handelt es sich eigentlich um notify-osd oder xfce4-notifyd ?
Ersteres wurde laut Changelog im September 2024 letztmalig behandelt, während das von xfce Anfang März diesen Jahres 'in Arbeit' war.
Ich habe allerdings keinen Bug gefunden. Wobei, wie sich das Teil unter Plasma nennt, weiß ich gar nicht.
Hallo Unklarer,
root@T580:/home/detlef# apt-cache policy xfce4-notifyd
xfce4-notifyd:
Installiert: 0.9.7-2
Installationskandidat: 0.9.7-2
Versionstabelle:
*** 0.9.7-2 500
500 https://deb.debian.org/debian unstable/main amd64 Packages
100 /var/lib/dpkg/status
root@T580:/home/detlef#
Ich nutze XFCE4 ;)
MfG Detlef
kriegste eigentlich eine Nachricht auf dem Desk, wenn du im Terminal eingibst:
notify-send "this is the summary" "this is the body of the notification"
Es sollten die zwei Zeilen erscheinen. ;)
Quelle hier (https://linuxconfig.org/how-to-send-desktop-notifications-using-notify-send)
Hallo Unklarer,
wenn ich das als user ausführe ja.
Es geht ja nicht aus dem script heraus von root gestartet nicht mehr.
MfG Detlef
Hmm, als root habe ich bammel, das auszuführen. Immerhin hat er das Script 2012 geschrieben. ;)
Es liegt also am Script. Da ist aber mein Latein am Ende. Tut mir Leid. >:(
also ich habe das Skript über 3 Jahre in Gebrauch, es macht ja immer noch das Backup! Nur das die Nachrichten nicht mehr angezeigt werden.
Mein bessere Hälfte hatte voreilig die Festplatte abgezogen und ich hatte dann den Stress mit der Wiederherstellung der Daten. ;)
Danke für Dein Interesse mir zu helfen.
Root darf nicht so einfach Sachen auf einem User Desktop ausgeben, da muss die Xauthority mitgegeben werden.
Hallo towo,
dann muß sich aber in Richtung Xauthority in den letzten Monaten was geändert haben. Das Script hat ja nach Anpassung des Ordners, der gesichert werden soll auf Anhieb funktioniert. Und das über knapp 3 Jahre mit den notify.
Wenn jemand ein ähnliches backupskript hat, das als user ausgeführt werden kann, dann wäre es schön, wenn es mir hier bereitgestellt werden würde.
Beim skripte erstellen bin ich ein totaler DAU! ;)
MfG Detlef
Quote from: postkutscher on 2025/04/02, 07:14:43
Zeile 16 in der Funktion notify_me()
su $USER_TMP -c "XAUTHORITY=/home/$USER_TMP/.Xauthority DISPLAY=:0 notify-send $1 $2"
Zeile 52
notify_me "Backup\-Platte\ erkannt" "starte\ Datensicherung\ \(ich\ sag\ es\ Dir,\ wenn\ ich\ fertig\ bin\!\)"
Zeile 58
notify_me "Backup\ heute\ schon\ durchgefuehrt" "Du\ kannst\ die\ Festplatte\ nun\ abstecken"
Quote from: unklarer on 2025/04/02, 18:52:05
notify-send "this is the summary" "this is the body of the notification"
@postkutscher und @unklarer
Ich habe die Zeile von unklarer ausprobiert.
Als User in der graphischen Oberfläche angemeldet und in einem Terminal ausgeführt funktioniert es.
In einem root Terminal nicht mehr. (Wurde ja auch schon beschrieben.)
Die Befehlzeile im Skript enthält "Xauthority". Soweit eigentlich in Ordnung.
Die Zeile von unklarer mit su erweitert, wobei <user> durch meinen Benutzernamen ersetzt wurde
su <user> -c notify-send "this is the summary" "this is the body of the notification"ergab den Fehler
No summary specified.Mein Verdacht, es hat mit Quoting zu tun. Zusätzliche einfache Anführungszeichen um den ursprünglichen Befehl führten zum Erfolg:
su <user> -c 'notify-send "this is the summary" "this is the body of the notification"'Deshalb teste das Skript mal mit der Zeile 16
su $USER_TMP -c 'XAUTHORITY=/home/$USER_TMP/.Xauthority DISPLAY=:0 notify-send "$1" "$2"'Der gesamte von root als $USER_TMP auszuführende Befehl steht in einfachen und die Variablen $1 und $2 in doppelten Anführungszeichen.
Du kannst analog dazu die Zeile in einem root Terminal testen, wobei die beiden <user> durch deinen Benutzernamen zu ersetzen sind.
su <user> -c 'XAUTHORITY=/home/<user>/.Xauthority DISPLAY=:0 notify-send "Summary" "The notification"'Die Zeilen 52 und 58 betreffend beinhaltete die Ausgabe im Titel die Backslashes.
Teste das bitte, und wenn es bei dir auch so ist dann:
"Backup\-Platte\ erkannt" zu
"Backup-Platte erkannt"und
"Backup\ heute\ schon\ durchgefuehrt" zu
"Backup heute schon durchgefuehrt"ändern.
Hallo scholle1,
vielen Dank für Deine Bemühungen mir zu helfen.
Wenn ich im user-terminal su detlef -c 'notify-send "this is the summary" "this is the body of the notification"' eingebe und das user-passwort eingebe, wird das Fenster (notify) angezeigt.
Habe daraufhin die Zeilen 16, 52 und 58 nach Deinen Vorschlägen angepasst, leider ohne Erfolg.
Das backup wird durchgeführt, es kommt aber keine Meldungen/notify.
Das skript liegt in /root/ und wird über "root cron befehl" gestartet. Selbst wenn ich den cron-befehl mit # auskommentiere und das skript manuell starte kommt kein notify
Ich habe keinen Plan!
Was mich persönlich vollkommen irritiert, ist, das es funktioniert hat und auf einmal nicht mehr funktioniert. >:(
MfG Detlef
Wechsel von X11 auf Wayland?
Jo, aber mit XFCE wird das nicht so einfach.
Ich würde testhalber als user mal ein xhost + in ein terminal tippen und dann schauen, ob die Benachrichtigungen erscheinen, wenn ja, ist es definitiv ein X-Auth Problem.
Hallo towo,
detlef@T580:~$ xhost +
access control disabled, clients can connect from any host
detlef@T580:~$
muss/soll das so sein?
Angezeigt wird jedenfalls nix.
Habe jetzt mal ne Testinstallation gemacht, bevor ich mir mein laufendes System noch kaputt spiele. ;)
Wie gehabt, Skript läuft, Anzeige nicht.
MfG Detlef
Wnn es nach 'xhost +' auch nicht funktioniert, ist es kein Berechtigungsproblem.
Hallo towo,
danke für die Info.
Werde mich nach einer anderen Möglichkeit zum automatischen Backup umsehen möglichst als user ausgeführt.
MfG Detlef
@postkutscher
Ich habe das Skript jetzt mal als ganzes getestet und die eigentliche Ursache für den von dir beschriebenen Fehler ermittelt.
In Zeile 9 bewirkt der Befehl
users | sort
keine Ausgabe. Wenn an dieser Stelle kein User ermittelt wird, kann die Funktion auch keine Nachricht verschicken.
Ändere bitte die Zeile 9 zu
ALL_USER="$(users /var/log/wtmp | sed 's/ /\n/g' | sort -u)"
Mein vorheriger Lösungsversuch https://forum.siduction.org/index.php?topic=9677.msg77001#msg77001 (https://forum.siduction.org/index.php?topic=9677.msg77001#msg77001) basierte auf Tests einzelner Befehle im Terminal. Die Quotierung gestaltet sich im Terminal und im Skript zuweilen unterschiedlich. Auf jeden Fall solltest du die dort vorgeschlagenen Änderungen nicht anwenden.
@scholle1,
der Tip war Klasse!! ;) (Find den smiley für Damen hoch hier nicht!)
Vielen Dank!
MfG Detlef
Edit: "wollte natürlich Daumen hoch" schreiben! 😉
Quote from: postkutscher on 2025/04/07, 07:14:16
(Find den smiley für Damen hoch hier nicht!)
Ein Hoch auf die Damen! (https://i.imgur.com/XyIP1DT.png)