Ten wątek jest nieco stary, przepraszam, ale mam nadzieję, że nadal mogę dodać coś użytecznego do tematu. (także Josef Kufner napisał fajny skrypt, na mój gust był trochę za długi i używa PHP)
Potrzebowałem także narzędzia opisanego w pierwotnym pytaniu (aby wysłać wiadomość do wszystkich aktywnych użytkowników X). I na podstawie odpowiedzi tutaj napisałem ten mały skrypt typu bash, który wyszukuje aktywnych użytkowników X (używając „kto”), a następnie uruchamia powiadomienie-wysyłanie dla każdego aktywnego użytkownika.
A najlepsze: możesz użyć mojego skryptu dokładnie tak jak „powiadom-wyślij” ze wszystkimi jego parametrami! ;-)
powiadom-wyślij-wszystko:
#!/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
Skopiuj powyższy kod do pliku o nazwie „powiadom-wyślij-wszystko”, spraw, aby był wykonywalny i skopiuj go do / usr / local / bin lub / usr / bin (jak chcesz). Następnie uruchom go np. Jako root w sesji konsoli jak poniżej:
notify-send-all -t 10000 "Warning" "The hovercraft is full of eels!"
Używam go już od kilku miesięcy na różnych maszynach i jak dotąd nie miałem żadnych problemów, i przetestowałem go na komputerach stacjonarnych MATE i Cinnamon. Z powodzeniem działa również w cron i anacron.
Napisałem ten skrypt dla / pod ArchLinux, więc proszę powiedz mi, jeśli masz problemy z innymi dystrybucjami Linuksa lub komputerami stacjonarnymi.