Ostatní > Tipy a triky pro Linux

Automatické vypínání počítače po nastavené době -> Shutdown GTimer

(1/27) > >>

GdH:
Aktuální pythonní verze uspávače pecí je na sourceforge.net, informace vždy v tomto vlákně.



Původní obsah:
Napsal jsem na popud jednoho zdejšího dotazu malý skriptík na vypínání a uspávání počítače po nastavené době. Třeba to někomu bude k užitku, případně dá nějaké náměty na vylepšení, nebo mi řekne, že je to k ničemu a je tu hromada lepších řešení, kterých jsem si já nevšiml.
Pro správnou funkci skriptu je potřeba mít nainstalován balík libnotify-bin, tedy pokud nemáte, zadejte do trminálu:

--- Kód: ---sudo apt-get install libnotify-bin
--- Konec kódu ---

Skript je možno stáhnout zde, uložte ho, kam uznáte za vhodné a nezapomeňte nastavit spustitelný příznak. Pak stačí vytvořit spouštěč do Panelu, na Plochu, či jinam, nebo si nastavíte klávesovou zkratku.
Po spuštění zadáte počet minut do vypnutí a potvrdíte. Minutu před koncem odpočtu ještě budete pro jistotu upozorněni, abyste náhodou nebyli nemile překvapeni. Pokud se rozhodnete, že chcete odpočet zrušit, stačí skript spustit znovu. Informace o činnosti skriptu budete dostávat ve formě informačních bublin. Dále skript poslouchá na přepínače --suspend a --hibernate, které změní vypínání na uspávání do RAM, či hibernaci na disk. Minimální nastavitelný čas je 0 minut, vstup je limitovaný na 4 číslice a při špatném zadání budete upozorněni a znovu vyzváni k zadání času. Přednastavená hodnota 120 minut se dá ve skriptu jednoduše změnit na řádku t=`zenity --entry --title 'Shutdown timer' --text 'Zadej čas do '"$mod"' PC v minutách' --entry-text=120`.

Testováno na Ubuntu 8.04, 9.04, 9.10, 10.04, Debian Squeeze.




--- Kód: ---#!/bin/bash

if PID=`pidof -x "$0"`; then
if echo "$PID" | grep -q '\ '; then
# máme více procesů, kill'em all!
notify-send --icon gnome-shutdown "Shutdown timer" "Odpočet zrušen!" &
killall `basename $0`
fi
else
echo "Nejsem schopen najít ani sám sebe, raději končím.."; exit 1
fi

if [ `dbus-send --system --print-reply --dest=org.freedesktop.Hal /org/freedesktop/Hal/devices/computer org.freedesktop.DBus.Introspectable.Introspect | grep -E "\"Hibernate\"|\"Shutdown\"|\"Suspend\"" | wc -l` == 3 ]
then
cmdp="dbus-send --system --print-reply --dest=org.freedesktop.Hal /org/freedesktop/Hal/devices/computer org.freedesktop.Hal.Device.SystemPowerManagement."; serv1=1

elif [ `dbus-send --system --print-reply --dest=org.freedesktop.UPower /org/freedesktop/UPower org.freedesktop.DBus.Introspectable.Introspect | grep -E "\"Hibernate\"|\"Suspend\"" | wc -l` == 2 ];then
cmdp="dbus-send --system --print-reply dest=org.freedesktop.UPower /org/freedesktop/UPower org.freedesktop.UPower."; serv2=1

fi

[ `dbus-send --system --print-reply --dest=org.freedesktop.ConsoleKit /org/freedesktop/ConsoleKit/Manager org.freedesktop.DBus.Introspectable.Introspect | grep "\"Stop\"" | wc -l` == 1 ] && serv3=1


 
no_service()
{
zenity --error --text "V systému není přítomna potřebná\n služba, ukončuji aplikaci"; exit 1
}

case $1 in
--suspend)
[[ ! "$serv1" && ! "$serv2" ]] && no_service
mod="uspání"
cmd="${cmdp}Suspend int32:0";;
--hibernate)
[[ ! "$serv1" && ! "$serv2" ]] && no_service
mod="hibernace"
cmd="${cmdp}Hibernate";;
*)
[[ ! "$serv1" && ! "$serv3" ]] && no_service
mod="vypnutí"
if [ $serv1 ]; then
cmd="${cmdp}Shutdown"
else
cmd="dbus-send --system --print-reply --dest=org.freedesktop.ConsoleKit /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Stop"
fi;;
esac

while :; do
time=`zenity --entry --title 'Shutdown timer' --text 'Zadej čas do '"$mod"' PC v minutách' --entry-text=120` || exit 1
echo "$time" | grep -Eq '^[0-9]{1,4}$' && break
notify-send --icon dialog-warning "Shutdown timer" "Špatné zadání!
povelená jsou pouze celá čísla
v rozsahu 0 - 9999" &

done
notify-send --icon gnome-shutdown "Shutdown timer" "$time minut do $mod počítače" &

for ((i=1;i<=$time;i++)); do
[[ $i == $(($time)) ]] && notify-send --icon dialog-warning "Shutdown timer" "1 minuta do $mod počítače!" &
sleep 60
done

eval "$cmd"

--- Konec kódu ---

Update 26.5.2010 - Skript nyní detekuje dostupné služby power managementu a dá vědět, když potřebnou službu nenajde.

Roman Vacho:
man shutdown

GdH:

--- Citace: Rovano  01 Února 2010, 15:36:08 ---man shutdown

--- Konce citace ---

Myslíš, že je to pohodlnější? Musíš psát, zadávat heslo.. Samozřejmě, že to znám.

Roman Vacho:
Promiň. Nechtěl jsem se dotknout Tvé snahy a práce. Ještě je tu Gshutdown(i když ne ve všech verzích fungoval spolehlivě).

1arash:
Tak to ja obľubujem skripty ešte potrebujem skript na vypnutie aplikácie časovo - tohoto istého zanru čo bude ukazovať upozornenie do vypnutia aplikácie alebo aj naopak čas do zapnutia aplikácie - to by my prišlo lepšie ako cez cron.

Navigace

[0] Seznam témat

[#] Další strana

Přejít na plnou verzi