Pular para o conteúdo

Regula o horário de uso do computador pelos filhos

FINALIDADE:
Este script foi desenvolvido com a finalidade de regular de forma automática (e sem questionamentos) o horário que os filhos usam o computador.

FUNCIONAMENTO:
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.

INSTALAÇÃO:
Altere no script suas preferências
Inclua no arquivo /etc/crontab: */1 *   * * *   root    <CAMINHO>/regula.sh &

OBS.: Testado em Ubuntu, necessita do pacote zenity
Emmanuel Ferro eferro
Hits: 7.118 Categoria: Shell Script Subcategoria: Miscelânea
  • Download
  • Nova versão
  • Indicar
  • Denunciar
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Descrição

FINALIDADE:
Este script foi desenvolvido com a finalidade de regular de forma automática (e sem questionamentos) o horário que os filhos usam o computador.

FUNCIONAMENTO:
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.

INSTALAÇÃO:
Altere no script suas preferências
Inclua no arquivo /etc/crontab: */1 *   * * *   root    <CAMINHO>/regula.sh &

OBS.: Testado em Ubuntu, necessita do pacote zenity
Download regula.sh Enviar nova versão
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Esconder código-fonte

#!/bin/bash
#
#       regula.sh
#       
#       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: 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.
#
#       COMO USAR: Altere a lista de filhos, 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.sh &" >> /etc/crontab
#
#                  Obs.: Considerando que o script está em /usr/local/bin           



# 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 )
mensagem="Tempo esgotado filha! \nVá dormir! \nDesligando em 3 minutos..."

# Verificar 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=2200 ; hora_fim=0600 ;; # sexta
    6) hora_ini=0000 ; hora_fim=0600 ;; # sábado
    7) hora_ini=2200 ; hora_fim=0600 ;; # domingo
    *) exit 0;;
esac
# ***************************************************************

# 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 a hora corrente estiver entre a hora_ini e hora_fim desligue em 3 minutos
if [ $hora -gt $hora_ini ] || [ $hora -lt $hora_fim ]; then 
    # Desligar em 3 minutos
    shutdown -h +3 & 

    # 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)
    # Mensagem de alerta
    su $logado -c "zenity --display :0 --warning --text '$mensagem'"
fi

exit 0

O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Lista usuários

Script Para Manutenção de usuários do Sistema

CSSH - Programa para agilizar o acesso aos servidores que você gerencia

Wget Interativo (Via shell)

Autenticando no Velox Empresarial

#1 Comentário enviado por letifer em 24/09/2008 - 18:43h
Adorei, Emmanuel, meus filhos é que não vão gostar, haha.
#2 Comentário enviado por chmod000 em 26/09/2008 - 01:32h
Muito legal mesmo! Parabéns!
#3 Comentário enviado por eferro em 27/09/2008 - 21:49h
Obrigado, espero ter ajudado.
#4 Comentário enviado por eferro em 27/09/2008 - 21:50h
Obrigado! Espero ter ajudado.
#5 Comentário enviado por eferro em 07/10/2008 - 08:23h
ALGUNS BUGS FORAM ENCONTRADOS E CORRIGIDOS. ABAIXO A VERSÃO 1.2



#!/bin/bash
#
# regula.sh Versão 1.2
#
# 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: 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.
#
# COMO USAR: Altere a lista de filhos, 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.sh &" >> /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 )
mensagem="Tempo esgotado $logado! \nVá dormir! \nDesligando em 3 minutos..."

# 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=2200 ; 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 3 minutos[IDENT]
shutdown -h +3 &

# 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'"
}

# 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 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

#6 Comentário enviado por facb69 em 04/09/2009 - 11:10h
Boa, Emanuel

Vou testar hoje à noite.
Obrigado pela iniciativa.

Abraço,
Fábio
#7 Comentário enviado por angeloo em 11/08/2022 - 09:38h
Bom dia, aqui pra mim, o primeiro sript funcionou normalmente....


Belém do Pará, PA, Brasil.
Linux Counter: #470403.
Since 20/04/2008
Mint GNOME 19

Contribuir com comentário

Entre na sua conta para comentar.