Linux slogan
Visite também: BR-Linux.org · Dicas-L · NoticiasLinux · SoftwareLivre.org · UnderLinux · BestLinux



» Screenshot
Linux: Slackware12 + KDE 4
Por jmucelli
» Login
Login:
Senha:

Se você ainda não possui uma conta, clique aqui.

Esqueci minha senha

» Wallpaper


Scripts

Linux user

Publicado por Emmanuel Ferro em 10/11/2008    [ 1093 hits ]

Login: eferro, 21184 pontos

   


Descrição
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".

[ Download: regula-2.0 ]   [ Enviar nova versão ]

[ 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 Linux recomendado "Cafereaza" - Baixando MP3
   Script Linux recomendado Import com timer
   Script Linux recomendado Fazendo backup de vários arquivos no LINUX
   Script Linux recomendado Script para fazer download do youtube
   Script Linux recomendado Gerenciar usuários do OpenLDAP com Sistema ZIMBRA

Comentários
Nenhum comentário foi encontrado.

Contribuir com comentário
  
Para executar esta ação você precisa estar logado no site, caso contrário, tudo o que for digitado será perdido.
Responsável pelo site: Fábio Berbert de Paula - Copyleft 2002-2009 Viva o Linux.com.br

Viva o Linux

A maior comunidade Linux da América Latina! Artigos, dicas, tutoriais, fórum, scripts e muito mais. Ideal para quem busca auto-ajuda em Linux.