Programando a hora de Desligar o sistema

Iniciado por msrgdias, 17 de Maio de 2007, 23:19

tópico anterior - próximo tópico

msrgdias

Existe algum programa de desligue o meu pc em uma determinada hora?

valeu!!!

alexmatos

No terminal:

sudo shutdown -h 14:20

Para desligar o computador às 14h20min (por exemplo).

sidney richards

tenta esse e vê se funciona:

#!/bin/bash

shutdown -h horario-desejado  8)

clcampos

Citação de: sidney richards online 18 de Maio de 2007, 00:43
tenta esse e vê se funciona:

#!/bin/bash

shutdown -h horario-desejado  8)

Já que apareceu um shell script ai já da pra ir mais longe. Fazer uma chamada ao usuário para digitar o horário desejado (usando zenity por exemplo), consistir o horário, e depois executar o comando. Assim teriamos algo bastante genérico.

Me disponho a fazer, se alguém não fizer antes, só que depois de dois dias sem dormir vou pra cama agora, se ninguém fizer até amanhã de manhã eu me comprometo a entregar até o meio dia.
Cristiano/Timóteo - MG
.: Como Fazer Perguntas de Forma Inteligente :.                
Com dúvida? pesquise!

clcampos

#4
11:54 hs... por pouco não cumpro o prometido.

Queria saber fazer as coisas mais simples. Sei que shell script dá pra condensar ao máximo a programação, e até que não estava grande, mas ai resolvi colocar comentários para que todos pudessem entender e cresceu muito. Além do que fui inventando consistências, e outras bobeiras o que ajudou no tamanho também.

Talvez alguém apareça até com algo bem menor, mas agora é o que eu pude fazer.

A rotina segue os seguintes passos:


  • Pega o horário
  • Consiste se esta digitado
  • Consiste se a hora esta correta
  • Consiste se os minutos estão corretos
  • Formata o horário para XX:YY (Dois dígitos para hora e dois dígitos para minutos)
  • Executa o comando

Eu não testei executando o comando final (comentei ele) porque não queria agendar nenhum desligamento, mas se o comando que o sidney richards estiver passado esta correto acho que funcionará.


#!/bin/bash
#
# Rotina para agendar o desligamento de um PC
#
# Cristiano
# 18mai2007 10:01

#
# Rotina para consistir o horário informado
#
consisteHora() {
pHora=$horaDesl

#
# Separa Hora e Minuto
#
Hora=`echo $pHora | cut -f1 -d":"`
Minu=`echo $pHora | cut -f2 -d":"`

#
# Verifica se Hora e Minuto possuem valores numéricos ou literais
#
[ `expr $Hora + 1` ] || return 9999
[ `expr $Minu + 1` ] || return 9999

#
# Verifica se Hora e Minuto estão corretos
#
test $Hora -lt 0 -o $Hora -gt 23 && return 9999
test $Minu -lt 0 -o $Minu -gt 59 && return 9999

#
# Horário Correto
#
return 0
}

#
#Variável que guarda o horário do desligamento
#
horaDesl=$1      # Caso deseje passar o horário de desligamento direto pela linha de comando

[[ "$horaDesl" = [Hh] ]] && clear && zenity --info --title="Agenda Desligamento" --text="Sintaxe do comando\n\
   para executar em modo interativo: agenda\n\
   para executar direto: agenda HH:MM\n\
   para ajuda: agenda h" && exit

while true; do

      #
      # Caso a data não tenha sido passada por parametro solicita a digitação da mesma
      #
      if test ! "$horaDesl"; then
         horaDesl=`zenity --title="Agenda Desligamento" --text="Digite a hora em que deseja desligar (Formato: HH:MM - 24 Horas ou Digite fim para encerrar" --entry`
      fi

      #
      # Consiste se nada foi digitado ou se foi solicitado o encerramento da rotina.
      #
      test "$horaDesl" = "" && zenity --info --title="Agenda Desligamento" --text="Nada foi digitado." && continue
      [[ "$horaDesl" = [Ff][Ii][Mm] ]] && exit

      #
      # Consiste se o que foi digitado esta correto
      #
      consisteHora

      #
      # Se a rotina de consistência estiver perfeita retorna zero e quebra o laço, caso contrário avisa e solicita data novamente
      #
      if test $? -eq 0; then
         break
      else
         zenity --info --title="Agenda Desligamento" --text="Hora digitada esta incorreta"
         horaDesl=""
      fi

done

###################################################################################
# Formata a hora para XX:YY (duas casas para hora e duas casas para minutos)
#
Hora=`echo $pHora | cut -f1 -d":"`
Tam=${#Hora}
Tam=`expr $Tam + 2`

Minu=`echo $pHora | cut -c$Tam-`

Hora=`printf "%02d" $Hora`
Minu=`printf "%02d" $Minu`

horaDesl="$Hora:$Minu"
###################################################################################

sudo shutdown -h $horaDesl

zenity --info --title="Agenda Desligamento" --text="Agendamento Concluido."


Copie a rotina, cole num arquivo (aqui chamei de agenda) e depois mude as permissões dele (chmod 755 arquivo).
Cristiano/Timóteo - MG
.: Como Fazer Perguntas de Forma Inteligente :.                
Com dúvida? pesquise!

msrgdias

Nossa vocÊs são demais!!!

vou testar valeu pessoal.

dudu_ubuntun

#6
Boa tarde!

Primeiramente, clcampos parabéns pelo script, sou fã de scripts ;)

E nesse post conheci o Gshutdown, vale apena conhecer, eu uso ele ;)

Um  abraço a todos.

alexmatos

Citação de: dudu_ubuntun online 19 de Maio de 2007, 13:27
Boa tarde!

Primeiramente, clcampos parabéns pelo script, sou fã de scripts ;)

E nesse post conheci o Gshutdown, vale apena conhecer, eu uso ele ;)

Um  abraço a todos.

Muito legal esse programa! Vou passar a indicá-lo para quem tiver começando. Boa alternativa pra quem não gosta muito da linha de comando.

clcampos

Valeu pela dica dudu_ubuntun. Já esta instalado, vou testar, mas pela interface é excelente.
Cristiano/Timóteo - MG
.: Como Fazer Perguntas de Forma Inteligente :.                
Com dúvida? pesquise!

dudu_ubuntun

aproveita e personaliza o comando para turn off , aqui so fazia o logof :P

eu uso como lançado o gksudo gshutdown para poder usar o shutdown -h now ;)

t+

Fat Cat

FGaz assim e mais facil
sudo shutdown -h 15:15 ou qualquer outro horário que vc queira

alexmatos

Citação de: Fat Cat online 21 de Maio de 2007, 08:31
FGaz assim e mais facil
sudo shutdown -h 15:15 ou qualquer outro horário que vc queira

Eu já tinha dito isso, amigo:

Citação de: alexmatos online 18 de Maio de 2007, 00:36
No terminal:

sudo shutdown -h 14:20

Para desligar o computador às 14h20min (por exemplo).