Regula o horário de uso do computador pelos filhos - Versão 2.0

Publicado por Emmanuel Ferro 10/11/2008

[ Hits: 5.155 ]

Download regula-2.0




FINALIDADE: Regular de forma automática (e sem questionamentos) o horário que os filhos usam o computador.

FUNCIONAMENTO: Desliga o computador segundo as regras de horários e castigo que você definir para os usuários que você quiser.
INSTALAÇÃO: Altere no script suas preferências e inclua no arquivo /etc/crontab a segunte linha: */1 * * * * root /regula-2.0 &

OBS.1: Testado em Ubuntu, necessita do pacote zenity.
OBS.2: Esta versão acrescenta a opção "de castigo".

  



Esconder código-fonte

#!/bin/bash
#
#    regula.sh Versão 2.0
#
#    changelog: 
#    1.0 - 2.0 - Acrécimo da opção de_castigo
#    
#    Copyright 2008 Emmanuel Ferro <emmanuel.ferro@gmail.com>
#
#    Este programa é software livre, você pode redistribuí-lo ou modificá-lo
#    sob os termos da GNU General Public License, versão 2 ou qualquer versão
#    mais recente, conforme publicado pela Free Software Foundation.
#  
#    Este programa é distribuido na esperança de que possa ser útil, porém 
#    SEM NENHUMA GARANTIA, sem mesmo a garantia implícita de COMERCIALIZAÇÃO 
#    ou ADEQUAÇÃO A UM DETERMINADO PROPÓSITO. Veja a GNU General Public License
#    para mais detalhes.
#  
#    Você pode ter recebido uma copia da GNU General Public License juntamente 
#    com este programa, do contrario solicite uma cópia escrevendo para Free 
#    Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 
#    MA 02110-1301, USA.
#
#    DESCRIÇÃO: 1) Desliga o computador se o usuário logado estiver na lista filhos,
#                  e a hora atual e o dia da semana estiverem num intervalo proibido.
#               2) Desliga o computador se o usuário logado estiver na lista de_castigo
#                  sem considerar o intervalo proibido.
#
#    COMO USAR: Altere a lista de filhos e de_castigo, a mensagem de alerta e os inervalos
#               proibidos conforme sua necessidade. Inclua uma entrada no arquivo
#               /etc/crontab, atravéz do comando abaixo:
#               $ sudo echo "*/1 *   * * *   root    /usr/local/bin/regula-2.0 &" >> /etc/crontab
#
#    Obs.1: Considerando que o script está em /usr/local/bin           
#    Obs.2: Atribua permissão de execução a este script ($ chmod a+x /usr/local/bin/regula.sh)          
#    Obs.3: Você pode criar uma exceção ao horário proibido sempre que quizer programando 
#           um shutdown para qualquer horário (antes, durante ou depois do horário proibido)

# Variáveis usadas
logado=`who|cut -d' '  -f1|uniq`
dia_sem=`date +%u`
hora=`date +%H%M`
shutd=`ps ax|grep shutdown|grep "\-h"|wc -c`

#  ************ ALTERE AQUI CONFORME SUA NECESSIDADE ************************
filhos=( iana bianca medu visita )
de_castigo=( iana )
mensagem="Tempo esgotado $logado! \nVá dormir! \nDesligando em 1 minutos..."
mensagem_castgo="$logado, você está de castigo!\nReflita sobre seu comportamento\nDesligando em 1 minuto"

# Definição de horário proibido para cada dia da semana
case $dia_sem  in
    1) hora_ini=2200 ; hora_fim=0600 ;; # SEGUNDA
    2) hora_ini=2200 ; hora_fim=0600 ;; # TERÇA
    3) hora_ini=2200 ; hora_fim=0600 ;; # QUARTA
    4) hora_ini=2200 ; hora_fim=0600 ;; # QUINTA
    5) hora_ini=0000 ; hora_fim=0600 ;; # SEXTA
    6) hora_ini=0000 ; hora_fim=0600 ;; # SÁBADO
    7) hora_ini=2200 ; hora_fim=0600 ;; # DOMINGO
    *) exit 0;;
esac
# ***************************************************************************

# Função que programa o desligamento e emite um alerta
desligar() {
    # Desligar em 1 minutos
    shutdown -h +1 & 

    # Pegando a sessão do usuário, para que o root execute uma aplicação no display de outro usuário
    export $(grep -z DBUS_SESSION_BUS_ADDRESS /proc/$(pgrep -fo gnome-screensaver)/environ)
    # Emitir mensagem de alerta 
    su $logado -c "zenity --display :0 --warning --text '$mensagem'"
}

# Função que altera a mensagem e desliga
castigo(){
    mensagem=$mensagem_castigo
    desligar
}

# Não faz nada se o usuário logado não for filho
e_filho=`echo ${filhos[*]}|grep $logado|wc -w`
[ ${e_filho} -eq 0 ] && exit 0 

# Não faz nada se já existe um shutdown programado
[ $shutd -gt 0 ] && exit 0

# Se houver castigo todo horário é proibido
e_castigo=`echo ${de_castigo[*]}|grep $logado|wc -w`
[ ${e_castigo} -ne 0 ] && castigo

# Se o intervalo proibido estiver no mesmo dia
if [ $hora_ini -lt $hora_fim ]; then
    # Verificar horário
    if [ $hora -gt $hora_ini ] && [ $hora -lt $hora_fim ]; then 
        desligar
    fi
# Se o intervalo proibido passar pela meia noite
else
    # Verificar horário
    if [ $hora -gt $hora_ini ] || [ $hora -lt $hora_fim ]; then 
        desligar
    fi
fi

# Fim
exit 0


Scripts recomendados

Script para rotacionar logs dos sites no Apache

Padronização de usuários em vários micros

pc-qemu.sh - Script configurador para QEMU

CriaDVD

Desmontar e Ejetar CD/DVD


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário