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

Publicado por Emmanuel Ferro 10/11/2008

[ Hits: 5.161 ]

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

Música com a real beleza da matemática

Backup via FTP

string_out: remova a primeira ocorrência de uma string em um arquivo de texto

Script para calcular a media área de cobertura de impressão (toner ou tinta)

Wireless Connectd


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts