Dieser Thread ist ein bisschen alt, sorry, aber ich hoffe, dass ich dem Thema noch etwas Nützliches hinzufügen kann. (auch Josef Kufner hat ein schönes Skript geschrieben, es war für meinen Geschmack etwas zu lang und es benutzt PHP)
Ich brauchte auch ein Tool wie in der ursprünglichen Frage beschrieben (um eine Nachricht an alle aktiven X-Benutzer zu senden). Und basierend auf den Antworten hier habe ich dieses kleine Nur-Bash-Skript geschrieben, das nach aktiven X-Benutzern sucht (mit 'who') und dann notify-send für jeden aktiven Benutzer ausführt.
Und das Beste: Sie können mein Skript mit all seinen Parametern genauso verwenden wie "notify-send"! ;-)
benachrichtige-sende-alles:
#!/bin/bash
PATH=/usr/bin:/bin
XUSERS=($(who|grep -E "\(:[0-9](\.[0-9])*\)"|awk '{print $1$5}'|sort -u))
for XUSER in $XUSERS; do
NAME=(${XUSER/(/ })
DISPLAY=${NAME[1]/)/}
DBUS_ADDRESS=unix:path=/run/user/$(id -u ${NAME[0]})/bus
sudo -u ${NAME[0]} DISPLAY=${DISPLAY} \
DBUS_SESSION_BUS_ADDRESS=${DBUS_ADDRESS} \
PATH=${PATH} \
notify-send "$@"
done
Kopieren Sie den obigen Code in eine Datei mit dem Namen "notify-send-all", machen Sie ihn ausführbar und kopieren Sie ihn nach / usr / local / bin oder / usr / bin (wie Sie möchten). Dann starte es zB als root in einer Konsolensitzung wie folgt:
notify-send-all -t 10000 "Warning" "The hovercraft is full of eels!"
Ich benutze es jetzt mehrere Monate auf verschiedenen Computern und hatte bisher keine Probleme. Ich habe es mit MATE- und Cinnamon-Desktops getestet. Läuft auch erfolgreich in Cron und Anacron.
Ich habe dieses Skript für / unter ArchLinux geschrieben. Bitte teilen Sie mir mit, wenn Sie Probleme mit anderen Linux-Distributionen oder -Desktops haben.