เธรดนี้ค่อนข้างเก่าขออภัย แต่ฉันหวังว่าฉันยังสามารถเพิ่มสิ่งที่มีประโยชน์ให้กับหัวข้อ (เช่น Josef Kufner เขียนสคริปต์ที่ดีมันแค่ยาวเกินไปสำหรับรสนิยมของฉันและใช้ PHP)
ฉันต้องการเครื่องมือตามที่อธิบายไว้ในคำถามเดิม (เพื่อส่งข้อความถึงผู้ใช้ X-active ทั้งหมด) และจากคำตอบที่นี่ฉันเขียนสคริปต์ bash-only ตัวนี้ซึ่งค้นหาผู้ใช้ X-active (โดยใช้ 'who') จากนั้นเรียกใช้การแจ้งเตือน - ส่งสำหรับผู้ใช้ที่ใช้งานอยู่ทุกคน
และที่ดีที่สุด: คุณสามารถใช้สคริปต์ของฉันเหมือนกับ "แจ้งเตือน - ส่ง" พร้อมพารามิเตอร์ทั้งหมด! ;-)
แจ้งส่งทั้งหมด:
#!/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
คัดลอกโค้ดด้านบนลงในไฟล์ชื่อ "alert-send-all" ทำให้สามารถเรียกใช้งานได้และคัดลอกไปยัง/ usr / local / binหรือ/ usr / bin (ตามที่คุณต้องการ) จากนั้นเรียกใช้เช่นเป็น root ในคอนโซลเซสชันดังนี้:
notify-send-all -t 10000 "Warning" "The hovercraft is full of eels!"
ฉันใช้มันหลายเดือนแล้วบนเครื่องต่าง ๆ และไม่มีปัญหาใด ๆ และฉันได้ทดสอบกับเดสก์ท็อป MATE และ Cinnamon ยังประสบความสำเร็จในการรันภายใน cron และ anacron
ฉันเขียนสคริปต์นี้สำหรับ / ภายใต้ ArchLinux ดังนั้นโปรดบอกฉันว่าคุณกำลังมีปัญหากับการกระจาย Linux หรือเดสก์ท็อปอื่น