[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Limitar acesso de tempo



Olá. 

O timeoutd é uma gambiarra, pelo menos no meu conceito do que seja uma
gambiarra. :D :D :D :D :D 

Nunca vi um servidor centralizado de controle para (des)conexão para
linux, mas não seria dificil de fazer um utilizando-se, no lado do
cliente, de wget, ssh ou ftp e um programinha feito em perl e compilado
em binario - agendado na cron - algo no estilo do timeoutd, so que sem
ser daemon - e do lado do servidor uma pasta contendo arquivos de
especificações de tempo/usuarios/maquinas. 

Falei perl, mas poderia ser feito mais facilmente em bash, ou até mesmo
em C. 

algo como 



do lado do cliente:
#!/bin/bash
LC_ALL=C
. /etc/controle_sessao.conf 
mkdir -p /var/run/$$controle$$
chown root.root /var/run/$$controle$$
chmod 700 /var/run/$$controle$$ -R
cd /var/run/$$controle$$ 
wget http://$SERVIDOR/$DIRETORIO/$MAQUINA

CONTROLE_USUARIO_X=$(last | grep still | egrep " :0 | :1| :2| :3| :4:|
:5| :6]")
USUARIO_X=$(echo "$CONTROLE_USUARIO_X" | awk '{ print $1}' )
TEMPO_USUARIO_X=$(echo "$CONTROLE_USUARIO_X"| awk '{ print
$4":"$5:"$6}' )

MES_USUARIO_X=$(echo "$TEMPO_USUARIO_X"|cut -d: -f1)
DIA_USUARIO_X=$(echo "$TEMPO_USUARIO_X"|cut -d: -f2)
HORA_USUARIO_X=$(echo "$TEMPO_USUARIO_X"|cut -d: -f3)
MINUTO_USUARIO_X=$(echo "$TEMPO_USUARIO_X"|cut -d: -f4)

CONTROLE_USUARIO=$(grep $USUARIO_X $MAQUINA)
MES_CONTROLE=$(echo $CONTROLE_USUARIO | cut -d: -f2 )
DIA_CONTROLE=$(echo $CONTROLE_USUARIO | cut -d: -f3 )
HORA_CONTROLE=$(echo $CONTROLE_USUARIO | cut -d: -f4 )
MINUTO_CONTROLE=$(echo $CONTROLE_USUARIO | cut -d: -f5 )

MES_AGORA=$(date xxx)
DIA_AGORA=$(date yyy)
HORA_AGORA=$(date zzz)
MINUTO_AGORA=$(date kkk)

if [ tra-la-la ]; then
if [ tra-la-le ]; then
if [ tra-la-li ]; then
...
...
...

killall -HUP $GRAFICO
...
...
...

fi
fi

rm -rf /var/run/$$controle$$

================== 
no  /etc/controle_sessao.conf apenas variaveis: 
SERVIDOR=192.10.0.1
DIRETORIO=controle
MAQUINA=maquina1.conf
GRAFICO=$(</etc/X11/default-display-manager)

no /etc/crontab, adicionar uma linha ou colocar o script dentro de
algum diretorio já existente, de acordo com a periodicidade desejada;

do lado do servidor, pasta do apache contendo:

/var/www/controle/maquina1.conf
/var/www/controle/maquina2.conf
/var/www/controle/maquina3.conf
/var/www/controle/maquina4.conf
(...)

cada arquivo .conf contendo a estrutura: 

usuario1:0:0:8:0
usuario2:0:0:8:0
usuario3:0:0:8:0
-----------
primeiro campo=nome do usuario
segundo campo=meses 
terceiro campo=dias
quarto campo=horas
quinto campo=minutos
...

em cada estação, agendaria na cron a periodicidade de execução do
script..

as unicas coisas para serem completadas - e  que estou com sono o
bastante para terminar -  seriam as datas atuais e os ifs da vida. 

---
apenas uma ideia de como montar você mesmo um servidor de controle de
horários. Com um pouco mais de tempo, você até poderia montar um
pacote, escrever uma documentação, e distribuir.. :D :D :D (e talvez
deixasse de ser uma "gambiarra". ) 
Neste caso eu usei wget e bash. Mas poderia ser usado um scp com chaves
pre-definidas, e perl compilado em bytecode, usando lwp para nao ter
que criar diretorios temporarios, ou um bash compilado usando o "shc -
Shell script compiler". Algo para que os seus usuários não se sintam
muito felizes em tentar ver como funciona :D :D :D 

Ou poderia usar este esqueleto para alterar os arquivos de configuração
do timeoutd de todas as estações, por exemplo. São apenas idéias. 


Meus 2 centavos.

[ ]s, e divirta-se

 henry

--- Samuel Rios Carvalho <nhawkbr@gmail.com> escreveu:

> esse timeoutd é legal, mas se tivesse um server pra gerenciar meus
> usuarios
> seria melhor.
> 
> 
> 
> On 3/31/07, oeslei taborda ribas <oesleiribas@gmail.com> wrote:
> >
> > Eu não falei que tinha um solução mais inteligente!!! rsss
> > apt-cache show timeoutd
> > depois de instalar você configura o "/etc/timeouts" e pronto
> > você pode definir maximo de tempo idle, maximo de tempo
> > em uma tty, limite por dia, etc... ele é bem completo
> >
> > At+
> > Oéslei
> >
> > Em 31/03/07, oeslei taborda ribas < oesleiribas@gmail.com>
> escreveu:
> > >
> > > talvez tenha uma solução mais inteligente, mais o que eu pensei
> > > seria que você pode colocar um script na cron para rodar de 10 em
> 10 min
> > > (pode mudar esse tempo) e nesse script vc pega o tempo de inicio
> de
> > > sessão
> > > que pode ser obtido com o comando "W" e diminui do horario atual
> logo
> > > você vai ter o tempo de uso daquela sessão depois você pode
> colocar
> > > uma condicional, se maior que 8 hrs restart o gdm ou desligue o
> pc,
> > > etc...
> > > Como eu disse talvez tenha algo pronto para isso, mais não
> conheço...
> > >
> > > At+
> > > Oéslei.
> > >
> > > Em 31/03/07, Samuel Rios Carvalho < nhawkbr@gmail.com> escreveu:
> > > >
> > > > Pessoal,
> > > >
> > > > alguém tem alguma idéia como posso limitar o tempo de uso de um
> PC.
> > > > por exemplo, se alguém passou mais de 8 horas com o gdm aberto,
> ele vai e
> > > > fecha sozinho.
> > > > num pode ser gambiarra. utilizo servidor PDC/samba e LDAP.
> > > >
> > > >
> > > > --
> > > > Samuel Rios Carvalho


__________________________________________________
Fale com seus amigos  de graça com o novo Yahoo! Messenger 
http://br.messenger.yahoo.com/ 



Reply to: