Portál AbcLinuxu, 25. října 2025 00:06
Zdravim,
Vas problem neriesim vo svojej podstate, ale ako docasne riesenie mozte pouzit aj toto, malo by to fungovat:
#! /bin/bash # # Treba upravit /etc/sudoers , aby bezny uzivatel mal prava na vypnutie systemu # a to pridanim nasledujuceho riadku do /etc/sudoers : # >>>>>>>> Editor na upravu /etc/sudoers pouzi vyhradne visudo !!! <<<<<<<< # # uzivatel localhost= NOPASSWD: /sbin/shutdown # # Skript treba nastavit, aby sa spustal spolu okennym manazerom alebo grafickym prostredim. # Je nutne mat nainstalovane zenity, ak sa nenahradi inym sposobom zobrazenia hlaseni. # Urcite je aj jednoduchsie riesenie, pohodlnejsie, predsa nejakym sposobom vypne system # aj demon pre spravu napajanie ... # WARN_FROM=10 # Horna hranica hodnoty stavu baterie v percentach pre prve upozornenie. WARN_TO=5 # Dolna hranica hodnoty stavu baterie v percentach, # ktora je vsak hodnotou uz pre hlasenie pre kriticky stav baterie # a pokus o vypnutie systemu, ak to uzivatel povoli. CRITICAL_VALUE=$WARN_TO # Urcuje hodnota $WARN_TO. SLEEP_TIME=60 # Zmen pre frekvenciu kontroly stavu napajania v sekundach while true do if ! ( acpi -a | grep 'on-line' &>/dev/null ) then CURRENT_BAT="$(acpi -b | cut -d ' ' -f 4 | sed 's/%,//' )" if [[ $CURRENT_BAT -le $WARN_FROM && $CURRENT_BAT -gt $WARN_TO ]] then zenity --info --text "Bateria je nabita na $CURRENT_BAT %.\n\ Ukonci vsetky cinnosti alebo sa pripoj k sieti." sleep "$SLEEP_TIME" elif [[ $CURRENT_BAT -le $CRITICAL_VALUE ]] then zenity --question --text "Bateria je nabita na $CURRENT_BAT %.\n\ Stav je kriticky a preto sa system vypne.\nSuhlasis ?" if [[ $? -eq 0 ]] then sudo shutdown -h now else sleep "$SLEEP_TIME" fi else sleep "$SLEEP_TIME" fi else sleep "$SLEEP_TIME" fi done
#! /bin/bash
#
# Treba upravit /etc/sudoers , aby bezny uzivatel mal prava na vypnutie systemu
# a to pridanim nasledujuceho riadku do /etc/sudoers :
# >>>>>>>> Editor na upravu /etc/sudoers pouzi vyhradne visudo !!! <<<<<<<<
#
# uzivatel localhost= NOPASSWD: /sbin/shutdown
#
# Skript treba nastavit, aby sa spustal spolu okennym manazerom alebo grafickym prostredim.
# Je nutne mat nainstalovane zenity, ak sa nenahradi inym sposobom zobrazenia hlaseni.
# Urcite je aj jednoduchsie riesenie, pohodlnejsie, predsa nejakym sposobom vypne system
# aj demon pre spravu napajanie ...
#
CRITICAL_VALUE=3 # Stav baterie v percentach, kedy sa vypise prvy raz
# ziadost o povolenie vypnutia systemu.
SLEEP_TIME=60 # Zmen pre frekvenciu kontroly stavu napajania v sekundach.
while true
do
if ! ( acpi -a | grep 'on-line' &>/dev/null )
then
CURRENT_BAT="$(acpi -b | cut -d ' ' -f 4 | sed 's/%,//' )"
if [[ $CURRENT_BAT -le $CRITICAL_VALUE ]]
then
zenity --question --text "Bateria je nabita na $CURRENT_BAT %.\n\
Stav je kriticky a preto sa system vypne.\nSuhlasis ?"
if [[ $? -eq 0 ]]
then
sudo shutdown -h now
else
sleep "$SLEEP_TIME"
fi
else
sleep "$SLEEP_TIME"
fi
else
sleep "$SLEEP_TIME"
fi
done
Mimochodom, ako si sam pisal, pouzivas gnome, takze zenity je dostupne, netreba zrejme nic instalovat. ;)
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.