Responder 
 
Avaliação do Tópico:
  • 0 Votos - 0 Média
  • 1
  • 2
  • 3
  • 4
  • 5
Desligar pc se inativo [RESOLVIDO]
01/07/2011, 11:00 (Resposta editada pela última vez em: 07/07/2011 14:39 por lucasdona.)
Resposta: #1
Desligar pc se inativo [RESOLVIDO]
Bom dia galera, utilizo ubuntu com xfce4 como ambiente gráfico e estou precisando configurar meu sistema para desligar o pc se estiver inativo por um certo tempo, vi alguns scripts que encerra o usuário, mas o que quero é desligar o pc mesmo.
Alguém pode me ajudar?
Abraços, Lucas.
Encontrar todas as respostas deste usuário
Citar esta mensagem em uma resposta
02/07/2011, 15:21
Resposta: #2
RE: Desligar pc se inativo
Qual script você viu?

Se o script é capaz de encerrar o usuário, ele também é capaz de desligar o computador. Basta alterar o comando para

Código:
# shutdown -h now

"Vamos tirar a barriga, senhor Barba? Digo..."

Debian Jessie | Usuário #517613
Encontrar todas as respostas deste usuário
Citar esta mensagem em uma resposta
04/07/2011, 11:30 (Resposta editada pela última vez em: 04/07/2011 11:30 por lucasdona.)
Resposta: #3
RE: Desligar pc se inativo
ele até desliga, mas desliga de qualquer jeito, mesmo mechendo teclado, mouse...

Código:
#!/bin/bash
# mouseup rm200702018
# A script for testing user activity on mouse
# and shutting down if none. Run as root

TIME=1M #set time between checks, "m" suffix for minutes

# Get a value for mouse interrupt which is 12: on this box.
# Use awk to get the value which is in line 12: column 2.
MOUSE1=`cat /proc/interrupts | grep 12: | awk '{print $2}'`

# Put the value into a log file.
echo "`date` MOUSE1 equals $MOUSE1" > testing.txt

# Wait for [$TIME] before checking again.
sleep $TIME

# Get a another value for mouse interrupt [$TIME] minutes later
MOUSE2=`cat /proc/interrupts | grep 12: | awk '{print $2}'`

# Send value to the log
echo "`date` MOUSE2 equals $MOUSE2" >> testing.txt

# If both values are the same log it then shut down
if [ $MOUSE1 -eq $MOUSE2 ] ; then
    echo "`date` shutdown -h now" >> testing.txt
    shutdown -h now
fi

#End of script
Encontrar todas as respostas deste usuário
Citar esta mensagem em uma resposta
04/07/2011, 11:45
Resposta: #4
RE: Desligar pc se inativo
tentou aumentar o valor da variável TIME para uns 10 minutos?

"Na caixa dizia: Requer MS Windows ou superior, então eu instalei Debian/GNU
Linux!"

.
Antes de postar use a busca e veja o Wiki.
Busca do FD
Wiki do FD
Visitar o website do usuário Encontrar todas as respostas deste usuário
Citar esta mensagem em uma resposta
04/07/2011, 13:27
Resposta: #5
RE: Desligar pc se inativo
Não, mas pelo que vi no script, ele pega o valor da linha 12: 2919 0 IO-APIC-edge i8042, e armazena "2919" em uma variável, mas esse valor não muda nunca.. já esperei mais de 10 min e ele não muda, qndo vc dá o comando "cat /proc/interrupts" ele te retorna vários valores, alguns mudam constantemente e outros nao. Agora não sei se algum aí muda de acordo com mouse e teclado, ou outro dispositivo que foi usado nesse inteevalo. Vou tentar mudar esta variável e posto mais tarde aqui.
Abraços.
Encontrar todas as respostas deste usuário
Citar esta mensagem em uma resposta
04/07/2011, 14:51
Resposta: #6
RE: Desligar pc se inativo
pelo que entendi o script pega a situação da interrupção 12 ou seja a IRQ12 que se refere-se a mouse, e verifica o estado do mesmo na cpu, não entendi muito bem mas aqui na minha máquina ele muda toda vez que mexo na mouse, pode ser que sua mouse esteja em uma IRQ diferente da 12 veja aí qual está mudando ao mexer na mouse, abra um terminal e digite:
cat /proc/interrupts

"Na caixa dizia: Requer MS Windows ou superior, então eu instalei Debian/GNU
Linux!"

.
Antes de postar use a busca e veja o Wiki.
Busca do FD
Wiki do FD
Visitar o website do usuário Encontrar todas as respostas deste usuário
Citar esta mensagem em uma resposta
06/07/2011, 11:43 (Resposta editada pela última vez em: 06/07/2011 11:43 por lucasdona.)
Resposta: #7
RE: Desligar pc se inativo
Consegui fazer funcionar o script, deixei a madrugada toda, invez de dar o comando halt, deixei só uma echo 'desligar pc' só para testar. Script:
Código:
#!/bin/bash
# Script para desligar o pc caso esteja inativo por um determinado tempo

TIME=10m #Variavel para alterar o tempo de inatividade

sleep 5
while true
do
    echo "Iniciando script"
    # Variável de ambiente do teclado ou USB
    TECLADO1=`cat /proc/interrupts | grep 16: | awk '{print $2}'`
    # Variável de ambiente da tela de toque    
    TOUCH1=`cat /proc/interrupts | grep 17: | awk '{print $2}'`
    sleep $TIME
    TECLADO2=`cat /proc/interrupts | grep 16: | awk '{print $2}'`
    TOUCH2=`cat /proc/interrupts | grep 17: | awk '{print $2}'`
    # Se os valores forem iguais, então nesse intervalo (TIME) ele ficou inativo    
    if [ $TOUCH1 -eq $TOUCH2 ] && [ $TECLADO1 -eq $TECLADO2 ]
    then
        echo "***Desligando...***" >> /home/taruira/auto_shutdown.log
        halt
    else
        echo "***Não desligar***" >> /home/taruira/auto_shutdown.log
    fi
# log básico para verificar testes
DATA=$(date)
echo "$DATA" >> /home/taruira/auto_shutdown.log echo "Touchs: $TOUCH1 $TOUCH2" >> /home/taruira/auto_shutdown.log
echo "Teclados: $TECLADO1 $TECLADO2" >> /home/taruira/auto_shutodown.log
done

TOUCH é a variavel que muda de valor quando encosto na tela de toque.
Mas surgiu um problema, quando abro a aplicação do cliente (esta ficará aberta todo o tempo) essa váriavel TOUCH que é a 17 do /proc/interrupts, fica mudando o tempo todo, seria como se eu tivesse encostando na tela toda hora. Então, o pc não desligará nunca, só funcionará caso a aplicação esteja fechada, já deixei outras aplicações abertas, somente aquela específica fica alterando o valor da variável. Mas tem uma coisa, nas opções de energia, a tela desliga depois de 3 min, mesmo com a aplicação aberta, então, se o gerenciador de energia consegue ver este tempo de inatividade e desligar a tela, então, teoricamente, linux né, teria como saber como ela sabe que ninguém mexeu nem no mouse nem teclado e nem tela pra tela desligar. Logo eu sabendo disso poderia implementar no meu script. Alguém teria uma idéia de como funciona o desligamento automatico do monitor depois de um certo tempo?
Abraços, Lucas.
Encontrar todas as respostas deste usuário
Citar esta mensagem em uma resposta
06/07/2011, 16:40
Resposta: #8
RE: Desligar pc se inativo
a tela é do tipo touch screen? no /proc/interrupts num tem a linha referente a mouse? talvez o gerenciador de energia não pegue eventos da tela e sim somente do mouse e teclado.

"Na caixa dizia: Requer MS Windows ou superior, então eu instalei Debian/GNU
Linux!"

.
Antes de postar use a busca e veja o Wiki.
Busca do FD
Wiki do FD
Visitar o website do usuário Encontrar todas as respostas deste usuário
Citar esta mensagem em uma resposta
07/07/2011, 14:38
Resposta: #9
RE: Desligar pc se inativo
Resolvido, meu amigo fez uma aplicaçãozinha em C e resolvou o problema.
Mas, no caso, foi especifico para uso no meu pc, acho que esse script aí de cima serve para qualquer pc, basta trocar a variavel do /proc/interrupts e pronto.
Abraços, Lucas.
Encontrar todas as respostas deste usuário
Citar esta mensagem em uma resposta
07/07/2011, 16:52
Resposta: #10
RE: Desligar pc se inativo [RESOLVIDO]
Não teria como você postar o código fonte desse programa em C que seu amigo fez? Assim fica aí, pro caso de alguém também precisar. Abraços!

"Vamos tirar a barriga, senhor Barba? Digo..."

Debian Jessie | Usuário #517613
Encontrar todas as respostas deste usuário
Citar esta mensagem em uma resposta
08/07/2011, 15:33
Resposta: #11
RE: Desligar pc se inativo [RESOLVIDO]
OK, vou pedir a ele o código fonte.
Abraços, Lucas.
Encontrar todas as respostas deste usuário
Citar esta mensagem em uma resposta
12/03/2012, 15:38
Resposta: #12
RE: Desligar pc se inativo [RESOLVIDO]
Já está como resolvido, mais vai ai como eu fiz para desligar o pc, depois que li esté post.

A função deste Script é desligar o pc caso esteja inativo por um determinado tempo. O script vai ficar verificando o mouse e o teclado se há mudança nos seus valores através do comando: cat /proc/interrupts.

No meu casso estou verificando as interrups do mouse (12) é do teclado (1). O grep –v e para não ler algumas variações, pois sem o comando pegou algumas variações como 01, 11 e 21.

Criar o script no /etc/inativo.sh (pode ser em outro local), torná-lo executável – chmod +x – e depois colocar para iniciar com o sistema.

Comigo o scrip trabalhou melhor quando coloquei o comando no final do arquivo /etc/rc.local (antes do exit 0), sh /etc/inativo.sh. No início coloquei no /etc/init.d e com o rcconf marquei para iniciar com o sistema, ao ativar o script o mesmo inicia o shutdown, porém parava na tela de CRTL+D ou continuar, ou na tela de desligamento e não finalizava.


#!/bin/bash
# Script para desligar o pc caso esteja inativo por um determinado tempo

TIME=30m #Variavel para alterar o tempo de inatividade
LOG="/tmp/inativo.log"
if [ -e $LOG ]; then
rm $LOG
fi

while true
do
DATA=$(date)
## captura variavel do teclado e do mouse ps2
## a opção memos -v e para não considerar a variavel, pois pode ser encontrado pelo comando
TECLADO1=`cat /proc/interrupts | grep 1: | grep -v 01: | grep -v 11:| grep -v 21: | awk '{print $2}'`
MOUSE1=`cat /proc/interrupts | grep 12: | awk '{print $2}'`

## captura variavel do teclado e do mouse ps2 novamente apos o time para comparar
sleep $TIME
TECLADO2=`cat /proc/interrupts | grep 1: | grep -v 01: | grep -v 11: | grep -v 21:| awk '{print $2}'`
MOUSE2=`cat /proc/interrupts | grep 12: | awk '{print $2}'`

# Se os valores forem iguais, entao nesse intervalo (TIME) ele ficou inativo
if [ "$MOUSE1" -eq "$MOUSE2" ] && [ "$TECLADO1" -eq "$TECLADO2" ]; then
/sbin/shutdown -h now
else
echo "***Nao desligar***" >> $LOG
echo "$DATA" >> $LOG
echo "Mouse: $MOUSE1 $MOUSE2" >> $LOG
echo "Teclado: $TECLADO1 $TECLADO2" >> $LOG
echo "" >> $LOG
fi
done
Encontrar todas as respostas deste usuário
Citar esta mensagem em uma resposta
12/03/2012, 19:59 (Resposta editada pela última vez em: 12/03/2012 20:02 por GNU matador de leoes.)
Resposta: #13
RE: Desligar pc se inativo [RESOLVIDO]
Eu prefiro fazer o controle em "Proteção de tela". É mais fácil e além do mais a RODA já foi inventada. Alegre Abraços.
Encontrar todas as respostas deste usuário
Citar esta mensagem em uma resposta
15/03/2012, 16:17
Resposta: #14
RE: Desligar pc se inativo [RESOLVIDO]
Pessoal, melhorando a dica acima.

O script está OK, porém em algumas maquinas tive problema em usar o rc.local para iniciar. O QUE FIZ ENTÃO:

Só criei o link no runlevel 2 (padrão Debian para modo gráfico) no modo tradicional = ln -s /etc/init.d/inativo.sh /etc/rc2.d/S20inativo.sh - usei 0 S20 para criar logo após o modo gráfico iniciar (precaução).

NÃO usei nenhum programa para inclui-ló no runlevel (tipo rcconf - update-rc.d,etc..., porque, observei que ele incluía os STOP no runlevel 0 1 6, o que causava um conflito e o comando de shutdown erá abortado e não finaliza a maquina, após o init 0 ficava na tela de desligamento e nada.

Em relação a desligar pela PROTEÇÃO DE TELA, informe como vc fez, porque ainda não vi está opção, DESLIGAR O COMPUTADOR POR INATIVIDADE.
Encontrar todas as respostas deste usuário
Citar esta mensagem em uma resposta
16/03/2012, 16:54
Resposta: #15
RE: Desligar pc se inativo [RESOLVIDO]
muito boa.,.. se usassem esse tipo de script nos computadores da faculdade, com certeza reduziria uns 30% de consumo de energia elétrica dos computadores inativos.

o q vejo de computadores q ficam dias ligado sem uso nenhum é foda
Visitar o website do usuário Encontrar todas as respostas deste usuário
Citar esta mensagem em uma resposta
Responder 


Ir ao Fórum:


Usuários visualizando este tópico: 1 Visitantes

Entre em Contato | Fórum Debian | Voltar ao Topo | Voltar ao Conteúdo | Modo Leve (Arquivo) | Feeds RSS