Prosíme přihlašte se nebo zaregistrujte.

Přihlašte se svým uživatelským jménem a heslem.
World of Warcraft

Novinky: Školení nejen k OS Ubuntu pro širokou veřejnost, více informací zde.

Autor Téma: Automatické vypínání počítače po nastavené době -> Shutdown GTimer  (Přečteno 72014 krát)

GdH

  • Moderátor
  • Závislák
  • *****
  • Příspěvků: 3008
  • Karma: +480/-17
    • Zobrazit profil
    • GdH-Notes
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: [Vybrat]
sudo apt-get install libnotify-bin
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: [Vybrat]
#!/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"

Update 26.5.2010 - Skript nyní detekuje dostupné služby power managementu a dá vědět, když potřebnou službu nenajde.
« Poslední změna: 17 Říjen 2011, 02:51:16 od GdH »

Roman Vacho

  • Člen placené komunitní podpory
  • Moderátor
  • Guru
  • *****
  • Příspěvků: 5588
  • Karma: +218/-47
  • Jeden vykope studnu, tisíce z ní pijí tisíc let.
    • Zobrazit profil
Re: Automatické vypínání počítače po nastavené době
« Odpověď #1 kdy: 01 Únor 2010, 15:36:08 »
man shutdown
Vyřešená vlákna je vhodné uzavřít dodáním znaků "[vyřešeno]" do názvu téma v editaci prvního příspěvku.

GdH

  • Moderátor
  • Závislák
  • *****
  • Příspěvků: 3008
  • Karma: +480/-17
    • Zobrazit profil
    • GdH-Notes
Re: Automatické vypínání počítače po nastavené době
« Odpověď #2 kdy: 01 Únor 2010, 15:42:18 »
man shutdown

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

Roman Vacho

  • Člen placené komunitní podpory
  • Moderátor
  • Guru
  • *****
  • Příspěvků: 5588
  • Karma: +218/-47
  • Jeden vykope studnu, tisíce z ní pijí tisíc let.
    • Zobrazit profil
Re: Automatické vypínání počítače po nastavené době
« Odpověď #3 kdy: 01 Únor 2010, 15:57:51 »
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ě).
Vyřešená vlákna je vhodné uzavřít dodáním znaků "[vyřešeno]" do názvu téma v editaci prvního příspěvku.

1arash

  • Člen
  • **
  • Příspěvků: 125
  • Karma: +5/-3
    • Zobrazit profil
Re: Automatické vypínání počítače po nastavené době
« Odpověď #4 kdy: 01 Únor 2010, 16:42:09 »
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.
Základní příkazy podle abecedy
Instalacia programov:
apt-cache search balik   sudo apt-get install sudo apt-get remove sudo apt-get clean sudo passwd root          se meni heslo  Alt+F2 a gksudo nautilus           instalovanie v terminali  apt-cache search balik         Hledá zadaný balík. apt-cache show balik           Pokracovanie -v profile arash@jabber.cz

GdH

  • Moderátor
  • Závislák
  • *****
  • Příspěvků: 3008
  • Karma: +480/-17
    • Zobrazit profil
    • GdH-Notes
Re: Automatické vypínání počítače po nastavené době
« Odpověď #5 kdy: 01 Únor 2010, 18:25:42 »
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.

Z cvičných důvodů bych se na to podíval, až bude čas, problém v tom nevidím. Kdyžtak to můžeš trochu upřesnit, popsat konkrétní možnosti použití.

GdH

  • Moderátor
  • Závislák
  • *****
  • Příspěvků: 3008
  • Karma: +480/-17
    • Zobrazit profil
    • GdH-Notes
Re: Automatické vypínání počítače po nastavené době
« Odpověď #6 kdy: 01 Únor 2010, 18:41:20 »
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ě).

Díky, to už je zajímavější tip :)

Mimochodem, sice mi přišel tvůj první příspěvek unáhlený, ale je fajn, že to tu je, někomu se to hodit může, čím víc informací pohromadě, tím lépe!
« Poslední změna: 01 Únor 2010, 22:16:44 od GdH »

1arash

  • Člen
  • **
  • Příspěvků: 125
  • Karma: +5/-3
    • Zobrazit profil
Re: Automatické vypínání počítače po nastavené době
« Odpověď #7 kdy: 01 Únor 2010, 21:50:18 »
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.

Z cvičných důvodů bych se na to podíval, až bude čas, problém v tom nevidím. Kdyžtak to můžeš trochu upřesnit, popsat konkrétní možnosti použití.

Tak detail použitia je - potrebujem časovo vypnut program aj ohľadom cpu ,aby nešiel celu noc keď už splnil ucel - a spustiť dalsiu aplikaciu časovo- Tak že by to bolo super časovo naprogramovať zapnutie a vypnutie aplikácii cez skript z oznamenim upozornením ako je ten Vas skript na vypnutie pc. Na ukončenie by stačilo aj killall alebo pkill - len to upozornenie sa my velmo pacilo...
Základní příkazy podle abecedy
Instalacia programov:
apt-cache search balik   sudo apt-get install sudo apt-get remove sudo apt-get clean sudo passwd root          se meni heslo  Alt+F2 a gksudo nautilus           instalovanie v terminali  apt-cache search balik         Hledá zadaný balík. apt-cache show balik           Pokracovanie -v profile arash@jabber.cz

play3man

  • Člen
  • **
  • Příspěvků: 287
  • Karma: +10/-3
    • Zobrazit profil
Re: Automatické vypínání počítače po nastavené době
« Odpověď #8 kdy: 04 Únor 2010, 09:48:47 »
Keď sme u toho aká verzia gshutdown funguje? Mám 0.2 a pri vypnutí sa len odhlási.
Stovky článků o hrách pro konzole značek Sony PlayStation, Microsoft Xbox a Nintendo. Sortiment se každým dnem rozšiřuje! Konzolista.cz
https://www.facebook.com/konzolista.cz
http://konzolista.tiscali.cz/

MORTALBAD

  • Návštěvník
  • *
  • Příspěvků: 47
  • Karma: +7/-1
    • Zobrazit profil
Re: Automatické vypínání počítače po nastavené době
« Odpověď #9 kdy: 07 Únor 2010, 19:14:41 »
Keď sme u toho aká verzia gshutdown funguje? Mám 0.2 a pri vypnutí sa len odhlási.

ten isty problem... preto odvtedy pouzivam shutdown cez terminal. aj tak nechapem ako sa moze taka chyba stat??? a ked uz stane preco sa to neda opravit? ten program je tym padom takmer uplne nepouzitelny...

Olleee

  • Návštěvník
  • *
  • Příspěvků: 15
  • Karma: +0/-0
    • Zobrazit profil
Re: Automatické vypínání počítače po nastavené době
« Odpověď #10 kdy: 07 Únor 2010, 20:43:20 »
Dobrá práce! Přesně něco takového jsem se teď hodlal vytvořit, ale ty jsi mě předběhl.. Aspoň o práci méně

pim

  • Člen
  • **
  • Příspěvků: 111
  • Karma: +19/-1
  • I zde mohla být umístěna Vaše reklama.
    • Zobrazit profil
Re: Automatické vypínání počítače po nastavené době
« Odpověď #11 kdy: 08 Květen 2010, 21:19:45 »
Toz jsem dalsim spokojenym uzivatelem tveho udelatka. Diky:-)
Ubuntu 10.04 64bit (LTS) & Arch Linux 64bit;
HP6720s; CPU: C2D T7250; Chipset: Intel GM965; Graphics: Intel GMA X3100; Wifi: Intel 3945ABG;

GdH

  • Moderátor
  • Závislák
  • *****
  • Příspěvků: 3008
  • Karma: +480/-17
    • Zobrazit profil
    • GdH-Notes
Re: Automatické vypínání počítače po nastavené době
« Odpověď #12 kdy: 08 Květen 2010, 22:30:31 »
Toz jsem dalsim spokojenym uzivatelem tveho udelatka. Diky:-)

Díky za zprávu, zapoměl jsem v textu doplnit (už jsem to napravil), že je přidán i přepínač --hibernate. Ve verzi ke stažení je tato změna již delší dobu.

vafle

  • Návštěvník
  • *
  • Příspěvků: 58
  • Karma: +12/-0
    • Zobrazit profil
Re: Automatické vypínání počítače po nastavené době
« Odpověď #13 kdy: 09 Květen 2010, 22:25:58 »
Perfektní, díky  ;)
Ubuntu 6.06 - 12.04 --> Xubuntu - 12.04 --> Kubuntu 12.10
.. dal se uvidi :)

GdH

  • Moderátor
  • Závislák
  • *****
  • Příspěvků: 3008
  • Karma: +480/-17
    • Zobrazit profil
    • GdH-Notes
Re: Automatické vypínání počítače po nastavené době
« Odpověď #14 kdy: 22 Květen 2010, 21:59:15 »
Původní verze programu občas s Ubuntu 10.04 zlobila s vypínáním, navíc HAL, kerý jsem pro PM funkce využíval, dále nebude v Ubuntu podporován. Napsal jsem tedy novou verzi, která
rozlišuje Ubuntu do verze 9.10 a 10.4, snad to bude správně fungovat i vám.
Nově je možné zadat i nulový čas.

Budu rád za info, pokud to někdo vyzkoušíte. Uvodní příspěvek obsahuje již nový kód, stáhnout možno zde.
« Poslední změna: 23 Květen 2010, 11:35:26 od GdH »

arrange

  • Závislák
  • ****
  • Příspěvků: 4032
  • Karma: +473/-15
  • "jdu s hlavou vztyčenou..."
    • Zobrazit profil
Re: Automatické vypínání počítače po nastavené době
« Odpověď #15 kdy: 24 Květen 2010, 00:41:03 »
Ahoj,

mně ten tvůj skript funguje, trochu jsem si s tím pohrál a upravil si to k obrazu svému, pro zajímavost
http://paste.ubuntu.com/438530/

BTW nechceš z toho udělat nějaký pěkný deb balík?  ;)
http://www.openstreetmap.org - mapy celého světa "wiki style"

GdH

  • Moderátor
  • Závislák
  • *****
  • Příspěvků: 3008
  • Karma: +480/-17
    • Zobrazit profil
    • GdH-Notes
Re: Automatické vypínání počítače po nastavené době
« Odpověď #16 kdy: 24 Květen 2010, 03:05:34 »
Ahoj,

mně ten tvůj skript funguje, trochu jsem si s tím pohrál a upravil si to k obrazu svému, pro zajímavost
http://paste.ubuntu.com/438530/

BTW nechceš z toho udělat nějaký pěkný deb balík?  ;)

Výborně, konečně také nějaký podnětný komentář, díky. Vždycky čekám, že mi ten kód někdo pořádně zdrbne a já se něco dozvím.. a ono nikdy nic. Balík mě napadl, ale také mě napadla dokonalejší nebashová varianta s pořádným GUI, což je výzva, vzhledem k tomu, že neovládám žádný programovací jazyk, natož Gtk ;D  Nicméně s PyGtk to jde rychleji, než jsem čekal, tak třeba časem..

arrange

  • Závislák
  • ****
  • Příspěvků: 4032
  • Karma: +473/-15
  • "jdu s hlavou vztyčenou..."
    • Zobrazit profil
Re: Automatické vypínání počítače po nastavené době
« Odpověď #17 kdy: 24 Květen 2010, 09:04:38 »
... Vždycky čekám, že mi ten kód někdo pořádně zdrbne ...
Profesionál se ti na to asi vykašle, takže pár zdrbů od laika  ;D ("musíme si pomáhat")

osobně bych nějakému .pid souboru nevěřil, obzvláště pokud to máš tak málo ošetřené
celkově to máš málo ošetřené, pokud dojde k nějaké nestandardní situaci, např. kliknu Cancel
taky pro mě mírně nepřehledné
proč využívat lsb_release, když ten jen čte obsah souboru /etc/lsb-release? Proč to procházet ještě awkem?
celkově - nebylo by lepší testovat přítomnost dbus cesty v systému než pomocí release?
bash -c "$cmd" proč spouštět další proces bash?
http://www.openstreetmap.org - mapy celého světa "wiki style"

GdH

  • Moderátor
  • Závislák
  • *****
  • Příspěvků: 3008
  • Karma: +480/-17
    • Zobrazit profil
    • GdH-Notes
Re: Automatické vypínání počítače po nastavené době
« Odpověď #18 kdy: 24 Květen 2010, 10:05:04 »
... Vždycky čekám, že mi ten kód někdo pořádně zdrbne ...
Profesionál se ti na to asi vykašle, takže pár zdrbů od laika  ;D ("musíme si pomáhat")

osobně bych nějakému .pid souboru nevěřil, obzvláště pokud to máš tak málo ošetřené
celkově to máš málo ošetřené, pokud dojde k nějaké nestandardní situaci, např. kliknu Cancel
taky pro mě mírně nepřehledné
proč využívat lsb_release, když ten jen čte obsah souboru /etc/lsb-release? Proč to procházet ještě awkem?
celkově - nebylo by lepší testovat přítomnost dbus cesty v systému než pomocí release?
bash -c "$cmd" proč spouštět další proces bash?

Máš samozřejmě pravdu, odpvídá to tomu, že jsem spíš bastlíř, než programátor :) Ten lsb_release je od začátku braný jako velká prasárna, ale pospíchal jsem na hokej a pak už to tam nechal, že to časem opravím :) Každopádně díky za kritiku, určitě si z ní něco vezmu, až bude čas a trochu to ještě doladím.

BTW ten tvůj skript mi nefunguje, ještě jsem to nezkoumal, ale končí na prvním exitu vždy.

arrange

  • Závislák
  • ****
  • Příspěvků: 4032
  • Karma: +473/-15
  • "jdu s hlavou vztyčenou..."
    • Zobrazit profil
Re: Automatické vypínání počítače po nastavené době
« Odpověď #19 kdy: 24 Květen 2010, 10:12:39 »
...
BTW ten tvůj skript mi nefunguje, ještě jsem to nezkoumal, ale končí na prvním exitu vždy.
To je vyloučeno  ;D

Jinak musí sedět název skriptu s proměnnou NAME.
http://www.openstreetmap.org - mapy celého světa "wiki style"

MacHala

  • Závislák
  • ****
  • Příspěvků: 1104
  • Karma: +107/-11
  • Big Bro iz watching joo!
    • Zobrazit profil
    • ZlejT
Re: Automatické vypínání počítače po nastavené době
« Odpověď #20 kdy: 24 Květen 2010, 10:51:02 »
Jinak musí sedět název skriptu s proměnnou NAME.
kdyz uz si tu tak chvalite kod, tak bych te chtel upozornit na nulty parametr :D
Prislusnik ligy, za kreativni pouzivani interpunkcnich znamenek, carek, predevsim.
=======================================
Tweetuju jako http://twitter.com/zl8

GdH

  • Moderátor
  • Závislák
  • *****
  • Příspěvků: 3008
  • Karma: +480/-17
    • Zobrazit profil
    • GdH-Notes
Re: Automatické vypínání počítače po nastavené době
« Odpověď #21 kdy: 24 Květen 2010, 11:14:14 »
...
BTW ten tvůj skript mi nefunguje, ještě jsem to nezkoumal, ale končí na prvním exitu vždy.
To je vyloučeno  ;D

Jinak musí sedět název skriptu s proměnnou NAME.

Nojo, zkoušel jsem ho ve tři ráno.. to by mě mohlo trochu omluvit, ne?  ;D

arrange

  • Závislák
  • ****
  • Příspěvků: 4032
  • Karma: +473/-15
  • "jdu s hlavou vztyčenou..."
    • Zobrazit profil
Re: Automatické vypínání počítače po nastavené době
« Odpověď #22 kdy: 24 Květen 2010, 11:31:27 »
Nene, MH má pravdu, dokonce víc než pravdu (pravda = man bash; víc než pravda = $0), skript jsem upravil tak, aby ho byl schopen spustit i gdh  ;D
http://paste.ubuntu.com/438732/
http://www.openstreetmap.org - mapy celého světa "wiki style"

GdH

  • Moderátor
  • Závislák
  • *****
  • Příspěvků: 3008
  • Karma: +480/-17
    • Zobrazit profil
    • GdH-Notes
Re: Automatické vypínání počítače po nastavené době
« Odpověď #23 kdy: 26 Květen 2010, 03:22:34 »
Tak, v tom posledním skriptu jsem špatně použil DeviceKit, který převlékl kabát a říká si teď UPower. Jak jsem to mohl přehlédnout.. Trochu jsem kód zaranžoval podle arrange, abych ho pak zas trochu rozbordelil funkcí detekce dostupných služeb, což umožňuje trochu univerzálnější použití, třeba na jiných distribucích. Zdá se, že mé problémy s vypínáním Lucida (systém se vypne vždy, ale počítač někdy zůstane běžet) nezpůsobuje HAL, ConsoleKit mi dělá to samé. Ještě to musím pořádně vysledovat. Prosím dobrovolníky o otestování na svých strojích.
Dále ještě zbývá přidat možnost zamykání obrazovky při suspendu... a help, krom kultivace kódu.

panet

  • Člen
  • **
  • Příspěvků: 147
  • Karma: +18/-6
    • Zobrazit profil
Re: Automatické vypínání počítače po nastavené době
« Odpověď #24 kdy: 26 Květen 2010, 10:33:53 »
Teda ne ze bych chtel rypat, ale to mi chcete rict, ze uz davno takovy program neexistuje a neda se proste stahnout?
Jsem Linuxovy pozorovatel, prilezitostny uzivatel.