Estou com um problema no meu sistema com usuários que ficam travados no login.
Utilizamos um servidor Linux como TS para acesso do sistema. Todo o sistema e banco de dados fica nesse servidor.
É criado um usuário para cada pessoa que utiliza o TS. O problema acontece é que do nada o o usuário fica travado no sistema e para liberar esse usuário eu tenho que dar um "kill -9 pid".
A solução pra esse problema seria a criação de um Shell Script que faria a verificação do usuário travado e mataria esse usuário do sistema automaticamente de 2 em 2 minutos, sendo controlado pelo crontab.
O problema é saber de um indicador para identificar que o usuário esteja travado. Com o usuário travado dando um "ps aux | grep usuárioxx" eu tenho o seguinte resultado:
Dando um "who -u | grep usuarioxx" eu tenho o seguinte resultado:
usuarioxx pts/10 Mar 15 15:57 00:06 25882 (xxx.xxx.xxx.xxx)
Então como devo fazer? Caso não seja possível fazer um Shell Script existe alguma outra meneira de matar esse usuário, como por exemplo, fazer uma rotina para quando o usuário fazer o segundo login ele matar o primeiro login?
Desde já, obrigado!
[2] Enviado em 16/03/2010 - 09:20h Re: Derrubar usuário logado no sistema
Ninguém? Eu pensei em uma solução mas preciso desenvolver o script.
Aumentaria o maxlogins dos usuários para 2.
A rotina verificaria quando o usuário se conectasse pela segunda vez.
Analisaria o who -u, pegando o seu login mais antigo por horas e minutos e matando. Então quando um usuário ficasse travado no sistema era só ele logar novamente que ele teria uma sessão nova destravada e com a antiga kilada.
Tentei fazer utilizando AWK mas não consegui.
[4] Enviado em 05/04/2010 - 13:23h Re: Derrubar usuário logado no sistema
1) O usuário loga
2) Se o antigo processo travou então quando eu mandar um who -u, terei duas entradas para o mesmo usuário.
3) Se 2) é verdadeiro então mato o processo travado. Faço isso utilizando um ps aux e pego todos os PID referente aos processos do usuário. Como o primeiro PID é o do processo travado, então dou um kill nele.
4) Usuário loga normalmente, sendo que 3) pode ocorrer ou não.
É isso mesmo?
Abraços
t+
[6] Enviado em 05/04/2010 - 22:23h Re: Derrubar usuário logado no sistema
Sim, isso mesmo. Já até consegui desenvolver essa rotina.
Agora só preciso dar uma melhorada nela. Eu fiz por essa lógica: limitei o maxlogins pra 2 por usuário. Utilizei o seguinte pensamento que quando o usuário travar, deverá ser feito um novo login. O loop é verificado de 30 em 30 segundos se o úsuário tem dois processos de login. Se for verdade o primeiro login é matado, ou seja, o que está travado.
Deu certo pra mim, agora quero fazer a leitura desses usuários por um arquivo qualquer. O comando who -u joga o nome de todos os usuários em um arquivo qualquer e a rotina verifica esse arquivo. Eu fiz uma rotina pra cada usuário, ficou bem extenso o programa.
Se alguém tiver uma idéia eu agradeço.
[7] Enviado em 05/04/2010 - 23:58h Re: Derrubar usuário logado no sistema
Amigo o meu problema é inverso ao seu , eu gostaria de nao permitir que um usuario que esteja logado no servidor via (NETTERM) se logasse de novo na rede se o IP for o mesmo, no meu caso quando o usuario faz isso o corno , trava o sistema , ja vi alguns aqui com 4 logins na mesma maquina.
Quanto ao seu problema vou pesquisar se achar algo , te falo
Abraco