Siduction Forum

Siduction Forum => Software - Support => Topic started by: postkutscher on 2025/04/02, 07:14:43

Title: notify-send aus root-script geht mehr
Post by: postkutscher on 2025/04/02, 07:14:43
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
Title: Re: notify-send aus root-script geht mehr
Post by: unklarer on 2025/04/02, 15:50:07
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.
Title: Re: notify-send aus root-script geht mehr
Post by: postkutscher on 2025/04/02, 18:47:08
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
Title: Re: notify-send aus root-script geht mehr
Post by: unklarer on 2025/04/02, 18:52:05
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)
Title: Re: notify-send aus root-script geht mehr
Post by: postkutscher on 2025/04/02, 18:59:46
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
Title: Re: notify-send aus root-script geht mehr
Post by: unklarer on 2025/04/02, 19:18:26
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.   >:(
Title: Re: notify-send aus root-script geht mehr
Post by: postkutscher on 2025/04/02, 19:34:14
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.

Title: Re: notify-send aus root-script geht mehr
Post by: towo on 2025/04/02, 20:11:57
Root darf nicht so einfach Sachen auf einem User Desktop ausgeben, da muss die Xauthority mitgegeben werden.
Title: Re: notify-send aus root-script geht mehr
Post by: postkutscher on 2025/04/03, 06:42:37
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
Title: Re: notify-send aus root-script geht mehr
Post by: scholle1 on 2025/04/03, 12:24:31
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.

Title: Re: notify-send aus root-script geht mehr
Post by: postkutscher on 2025/04/03, 21:43:25
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
Title: Re: notify-send aus root-script geht mehr
Post by: ro_sid on 2025/04/05, 12:00:33
Wechsel von X11 auf Wayland?
Title: Re: notify-send aus root-script geht mehr
Post by: towo on 2025/04/05, 12:02:47
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.
Title: Re: notify-send aus root-script geht mehr
Post by: postkutscher on 2025/04/05, 20:17:38
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
Title: Re: notify-send aus root-script geht mehr
Post by: towo on 2025/04/05, 20:23:01
Wnn es nach 'xhost +' auch nicht funktioniert, ist es kein Berechtigungsproblem.
Title: Re: notify-send aus root-script geht mehr
Post by: postkutscher on 2025/04/05, 21:08:59
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
Title: Re: notify-send aus root-script geht mehr
Post by: scholle1 on 2025/04/06, 17:53:23
@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.

Title: Re: notify-send aus root-script geht mehr
Post by: postkutscher on 2025/04/07, 07:14:16
@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! 😉
Title: Re: notify-send aus root-script geht mehr
Post by: unklarer on 2025/04/07, 13:49:06
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)