vancav
(usa Debian)
Enviado em 12/03/2012 - 15:44h
No Debian, fiz assim é funcionou.
sds
Vanderlei
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