Portál AbcLinuxu, 14. května 2025 01:58
#!/usr/bin/env python import sys, os zprava = sys.__stdin__.read() os.system("wall " + zprava) os.system("kdialog --msgbox \"" + zprava + "\"")(pozn. nejsem zrovna python guru)
xwall
a dal jsem ho do /etc/apcupsd/
. V /etc/apcupsd/apccontrol
jsem upravil řádek WALL=wall
na WALL=/etc/apcupsd/xwall
. Taky jsem přidal roota do seznamu uživatelů, kteří mají povoleno připojit se k X serveru pomocí xhost +local:root
a tento příkaz nechávám spouštět vždy po přihlášení. Při testech v konzoli mi skriptík fungoval bez problémů, při zkoušce výpadku proudu taky (včera), ale dneska (po rebootu) se mi v X nezobrazí nic, jen v konzoli. Logy mlčí, jen ve /var/log/everything.log
se objeví řádek Aug 2 19:53:24 mycomp wall[16225]: wall: user root broadcasted 1 lines (52 chars). Nevíte někdo, co by s tím mohlo být, popř. co s tím dělat?
apcupsd
spustím z emulátoru terminálu v X, tak vše funguje, jak má. Otázka tedy zní: jak zařídit, aby se aplikace, která je spuštěná z textové konzole (ještě před startem X) mohla házet hlášky i v X? Byl bych rád, kdyby nebylo nutné použít dalšího démona (stávající řešení).
/etc/apcupsd/apccontrol
jsem změnil řádek s WALL na WALL="tee /etc/apcupsd/events | wall"
, vytvořil jsem pojmenovanou rouru (mkfifo /etc/apcupsd/events
) a napsal si takový malý skriptík, který se mi spouští vždy při přihlášení. #!/usr/bin/env python import os zprava = "" while True: fifo = open("/etc/apcupsd/events") zprava = fifo.read() fifo.close() os.system("kdialog --msgbox \"" + zprava + "\"")
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.