Chủ đề này hơi cũ, xin lỗi, nhưng tôi hy vọng tôi vẫn có thể thêm một cái gì đó hữu ích cho chủ đề. (cũng là Josef Kufner đã viết một kịch bản hay, nó chỉ hơi dài một chút so với sở thích của tôi và nó sử dụng PHP)
Tôi cũng cần một công cụ như được mô tả trong câu hỏi ban đầu (để gửi tin nhắn cho tất cả người dùng X đang hoạt động). Và dựa trên các câu trả lời ở đây, tôi đã viết tập lệnh bash nhỏ này, tìm kiếm người dùng X hoạt động (sử dụng 'ai'), sau đó chạy thông báo gửi cho mọi người dùng đang hoạt động.
Và tốt nhất: bạn có thể sử dụng tập lệnh của tôi chính xác như "thông báo gửi", với tất cả các tham số của nó! ;-)
thông báo-gửi-tất cả:
#!/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
Sao chép mã ở trên vào một tệp có tên "notify-send-all", làm cho nó có thể thực thi được và sao chép nó vào / usr / local / bin hoặc / usr / bin (như bạn muốn). Sau đó chạy nó, ví dụ như root trong phiên giao diện điều khiển như thế này:
notify-send-all -t 10000 "Warning" "The hovercraft is full of eels!"
Tôi đang sử dụng nó vài tháng nay, trên các máy khác nhau và cho đến nay không có vấn đề gì và tôi đã thử nghiệm nó với máy tính để bàn MATE và Cinnamon. Cũng chạy thành công nó trong cron và anacron.
Tôi đã viết tập lệnh này cho / dưới ArchLinux, vì vậy vui lòng cho tôi biết nếu bạn gặp sự cố trên các bản phân phối hoặc máy tính để bàn khác của Linux.