SCRIP ANTI MULTI LOGIN [RESOLVIDO]

1. SCRIP ANTI MULTI LOGIN [RESOLVIDO]

Célio Junior
celiomagalhaesjr

(usa Ubuntu)

Enviado em 28/10/2016 - 12:42h

Preciso de ajuda, sou novo no linux... Porem gosto de me aventurar pelo sistema, criei um script que supostamente bloquearia a multi conexão de um usuario ao meu seridor SSH, onde eu tambem definiria quantos logins simultaneos o mesmo faria.
Olhem como ficou:

#!/bin/sh
lsusers="/tmp/users"
delay=5
echo $$ > /tmp/pids
if [ ! -f "$lsusers" ]
then
awk -F : '$3 >= 500 { print $1 " 1" }' /etc/passwd | grep -v '^nobody' > /tmp/users
fi
while true
do
while read usline
do
user="$(echo $usline | cut -d' ' -f1)"
s2ssh="$(echo $usline | cut -d' ' -f2)"
ps x | grep $user | grep -v grep | grep -v pts > /tmp/tmp2
s1ssh="$(cat /tmp/tmp2 | wc -l)"
echo "Usuario: $user - $s1ssh/$s2ssh"
if [ "$s1ssh" -gt "$s2ssh" ]; then
echo 'Desconectando conexoes SSH simultaneas'
while read line
do
tmp="$(echo $line | cut -d' ' -f1)"
echo "Desconectando conexao SSH com ID $tmp"
kill $tmp
done < /tmp/tmp2
rm /tmp/tmp2
fi
awk -F : '$3 >= 500 { print $1 " 1" }' /etc/passwd | grep -v '^nobody' > /tmp/users
done < "$lsusers"
echo "Aguardando $delay segundos para verificar novamente..."
sleep $delay
clear
done



Infelizmente o mesmo não funciona, o que fiz de errado?


  


2. MELHOR RESPOSTA

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 28/10/2016 - 18:18h

celiomagalhaesjr escreveu:

msoliver escreveu:

celiomagalhaesjr escreveu:

Eu gostaria de permitir alguns usuários em logar (1) unica vez, e que outros pudessem logar ate (4) vezes.

==========================================================
Entendi ....
A 1ª vez, para cada usuário, vc informa o limite e ele armazena . . . .
Outro detalhe, poste a saída do seguinte comando, por favor . . .
ps x | grep "COLOQUE_UM_USUARIO_COM_VARIAS CONEXOES_SSH" | grep -v grep | grep -v pts  


mso



No terminal deu isso:

root@LIFE-SSH:/home/mixssh# ps x | grep "gleisianesena" | grep -v grep | grep -v pts
10545 ? Ss 0:00 sshd: gleisianesena [priv]
root@LIFE-SSH:/home/mixssh#



Boa noite Célio . . .
Cara, deu trabalho . . . Minha gata (gata mesmo, dessas que fazem MIAU . . . ) resolveu andar pelo teclado . . . . Atrapalhou demais....
No fim deu certo.
Seguinte:
Somente na "1ª "RODADA", pede para inserir os LIMITES . . .
Teste, e de o retorno . . . :)
Segue:
#!/bin/bash
lsusers="/tmp/users"
NM_CON="/tmp/tmp2"
delay=5
COL=$(($(tput cols)/2))
echo $$ > /tmp/pids
LINE="0"
CA="\e[0;38;5;154m"
CF="\e[m"

LINHA() { printf '%*s' "$COL" '' | sed "s/ /—/g" ; }

CRIA_LSUSERS() {
tput clear
awk -F":" '{if($3>=500 && $3<65534) print $1}' /etc/passwd > /tmp/users && NR=$(wc -l < "$lsusers")
LOOPING
}

LOOPING() {
if ((LINE>=NR));then tput clear
echo -e "$(LINHA)\n"$CA"Aguardando $delay segundos para nova verificação."$CF"\n$(LINHA)" ; sleep $delay ; LINE=0 ; LOOPING
else
let LINE++
echo -e "$(LINHA)"
fi
user=$(awk -F":" 'NR=='$LINE' {print $1}' $lsusers)
NFLD=$(awk -F":" 'NR=='$LINE' {print NF}' $lsusers)
if ((NFLD==1));then
echo -n "DEFINA O LIMITE de CONEXõES do(a) $user: "
read s2ssh
sed -i ''$LINE's/$/:'$s2ssh'/' $lsusers
else
s2ssh=$(awk -F":" 'NR=='$LINE' {print $2}' $lsusers)
fi
ps x|grep "$user"|grep -v grep|grep -v pts|cut -d' ' -f2 > "$NM_CON"
s1ssh=$(wc -l < "$NM_CON")
echo -e "Usuário: $user - $s1ssh/$s2ssh"
if (("$s1ssh" > "$s2ssh")); then
PIDS="$(cat "$NM_CON"|xargs)"
echo "MATANDO conexoes SSH simultaneas do usuário:"$user", \"PIDs\":"$PIDS""
kill "$PIDS"
else
LOOPING
fi
LOOPING
}
CRIA_LSUSERS

Não ESQUEÇA . . .
Se a resposta foi ESCLARECEDORA, MARQUE-A como A MELHOR,
Dessa forma, ganho uns pontos, o que incentiva a continuar colaborando . . . :)


Abç.:
Marcelo Oliver



3. Re: SCRIP ANTI MULTI LOGIN [RESOLVIDO]

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 28/10/2016 - 14:06h

celiomagalhaesjr escreveu:

Preciso de ajuda, sou novo no linux... Porem gosto de me aventurar pelo sistema, criei um script que supostamente bloquearia a multi conexão de um usuario ao meu seridor SSH, onde eu tambem definiria quantos logins simultaneos o mesmo faria.
Olhem como ficou:

#!/bin/sh
lsusers="/tmp/users"
delay=5
echo $$ > /tmp/pids
if [ ! -f "$lsusers" ]
then
awk -F : '$3 >= 500 { print $1 " 1" }' /etc/passwd | grep -v '^nobody' > /tmp/users
fi
while true
do
while read usline
do
user="$(echo $usline | cut -d' ' -f1)"
s2ssh="$(echo $usline | cut -d' ' -f2)"
ps x | grep $user | grep -v grep | grep -v pts > /tmp/tmp2
s1ssh="$(cat /tmp/tmp2 | wc -l)"
echo "Usuario: $user - $s1ssh/$s2ssh"
if [ "$s1ssh" -gt "$s2ssh" ]; then
echo 'Desconectando conexoes SSH simultaneas'
while read line
do
tmp="$(echo $line | cut -d' ' -f1)"
echo "Desconectando conexao SSH com ID $tmp"
kill $tmp
done < /tmp/tmp2
rm /tmp/tmp2
fi
awk -F : '$3 >= 500 { print $1 " 1" }' /etc/passwd | grep -v '^nobody' > /tmp/users
done < "$lsusers"
echo "Aguardando $delay segundos para verificar novamente..."
sleep $delay
clear
done

Infelizmente o mesmo não funciona, o que fiz de errado?

===================================================
Boa tarde celiomagalhaesjr.
Verifique se funciona . . .
O script acima "limita" em 1 conexão, o meu da a opção de escolher . . . .
Segue:
#!/bin/bash
lsusers="/tmp/users"
delay=5
COL=$(($(tput cols)/3))
echo $$ > /tmp/pids

LINHA() { printf '%*s' "$COL" '' | sed "s/ /—/g" ; }

LOOPING() {
LINE=$((LINE+1))
[ -s $lsusers ] && awk -F":" '{if($3>=500 && $3<65534) print $1}' /etc/passwd > /tmp/users
NR=$(wc -l < "$lsusers")
((LINE>NR)) && { echo -e "\nAguardando $delay segundos para nova verificação" ; LINE=0 ; sleep $delay ; LOOPING ; } || echo -e "\n$(LINHA)\nPróximo Usuário."
user=$(sed -n "${LINE}p" $lsusers)
echo "LIMITAR o USUáRIO $user?"
read -p "[S/N]: " -n1 RESP
if [[ $RESP == +(S|s) ]];then
ps x| grep "$user"|grep -v grep|grep -v pts|cut -d' ' -f2 > /tmp/tmp2
s1ssh=$(wc -l < /tmp/tmp2)
echo ""
read -t5 -p "INFORME o LIMITE: " s2ssh ;[ $s2ssh ] || s2ssh="1" #Se não digitar em 5 segundos, DEFINE p/ "1".
echo -e "\nUsuário: $user - $s1ssh/$s2ssh"
if (("$s1ssh" > "$s2ssh")); then
echo "Desconectando conexoes SSH simultaneas"
while read line;do
echo "Desconectando conexao SSH do usuário: "$user" com ID: $line"
kill $line
done < /tmp/tmp2
else
LOOPING
fi
fi
LOOPING
}
LOOPING

#===================FIM===================#

E Não ESQUEÇA:
Se a resposta foi ESCLARECEDORA, MARQUE-A como A MELHOR,
Dessa forma, ganho uns pontos, o que incentiva a continuar colaborando . . . :)


É isso....
Qquer duvida, é só perguntar....

Att.:
Marcelo Oliver




4. Re: SCRIP ANTI MULTI LOGIN [RESOLVIDO]

Célio Junior
celiomagalhaesjr

(usa Ubuntu)

Enviado em 28/10/2016 - 14:29h

vou testar e ja retorno... obrigado


5. Re: SCRIP ANTI MULTI LOGIN [RESOLVIDO]

Célio Junior
celiomagalhaesjr

(usa Ubuntu)

Enviado em 28/10/2016 - 14:36h

No caso ele fica repetindo a pergunta, e se eu nao responde o que ocorre?



6. Re: SCRIP ANTI MULTI LOGIN [RESOLVIDO]

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 28/10/2016 - 14:44h

celiomagalhaesjr escreveu:

No caso ele fica repetindo a pergunta, e se eu nao responde o que ocorre?


Se for a pergunta "INFORME o LIMITE: "
Ele aguarda 5 segundos, se não responder, é definido como "1".
marcelo oliver



7. Re: SCRIP ANTI MULTI LOGIN [RESOLVIDO]

Célio Junior
celiomagalhaesjr

(usa Ubuntu)

Enviado em 28/10/2016 - 14:45h

ele repete tudo no caso, a verificação usuario por usuario


8. Re: SCRIP ANTI MULTI LOGIN [RESOLVIDO]

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 28/10/2016 - 14:57h

celiomagalhaesjr escreveu:

ele repete tudo no caso, a verificação usuario por usuario


Sim, fica repetindo indefinidamente (looping infinito), como o script que você postou.....
Qdo chega na ultima linha de "$lsusers", retorna para a linha nº 1.
A lógica é a mesma do script postado.....
Não quer que faça PERGUNTAS?
Quer o limite de conexões fixado em qto?

mso



9. Re: SCRIP ANTI MULTI LOGIN [RESOLVIDO]

Célio Junior
celiomagalhaesjr

(usa Ubuntu)

Enviado em 28/10/2016 - 14:57h

olha

LIMITAR o USUáRIO deividaguiar?
[S/N]: s
INFORME o LIMITE:
Usuário: deividaguiar - 2/1
Desconectando conexoes SSH simultaneas
Desconectando conexao SSH do usuário: deividaguiar com ID: ?
./teste.sh: line 27: kill: ?: arguments must be process or job IDs
Desconectando conexao SSH do usuário: deividaguiar com ID: ?
./teste.sh: line 27: kill: ?: arguments must be process or job IDs


isso foi so para mostrar, quando eu defino a opcao em 1, passo para o proximo user, logo apos o ultimo ele verifica, deconecta e inicia o interrogatório dnv



10. Re: SCRIP ANTI MULTI LOGIN [RESOLVIDO]

Célio Junior
celiomagalhaesjr

(usa Ubuntu)

Enviado em 28/10/2016 - 14:59h

msoliver escreveu:

celiomagalhaesjr escreveu:

ele repete tudo no caso, a verificação usuario por usuario


Sim, fica repetindo indefinidamente (looping infinito), como o script que você postou.....
Qdo chega na ultima linha de "$lsusers", retorna para a linha nº 1.
A lógica é a mesma do script postado.....
Não quer que faça PERGUNTAS?
Quer o limite de conexões fixado em qto?

mso


seria legal definir e ele salvar isso ( nao sei se é possivel) pq no caso se eu nao responder ele nao repete o processo




11. Re: SCRIP ANTI MULTI LOGIN [RESOLVIDO]

Célio Junior
celiomagalhaesjr

(usa Ubuntu)

Enviado em 28/10/2016 - 15:02h

Próximo Usuário.
LIMITAR o USUáRIO deividaguiar?
[S/N]: s
INFORME o LIMITE: 1

Usuário: deividaguiar - 2/1
Desconectando conexoes SSH simultaneas
Desconectando conexao SSH do usuário: deividaguiar com ID: ?
./teste.sh: line 27: kill: ?: arguments must be process or job IDs
Desconectando conexao SSH do usuário: deividaguiar com ID: ?
./teste.sh: line 27: kill: ?: arguments must be process or job IDs

&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;
Próximo Usuário.
LIMITAR o USUáRIO celiojr94?
[S/N]: n
&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;
Próximo Usuário.
LIMITAR o USUáRIO igoralves?
[S/N]: n
Aguardando 5 segundos para nova verificação

&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;
Próximo Usuário.
LIMITAR o USUáRIO mixssh?
[S/N]:


Veja , ele elimina a conxao e volta com o inquerito, no caso se eu nao reponde-lo novamenta ele fica parado



12. Re: SCRIP ANTI MULTI LOGIN [RESOLVIDO]

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 28/10/2016 - 15:03h

celiomagalhaesjr escreveu:

msoliver escreveu:

celiomagalhaesjr escreveu:

ele repete tudo no caso, a verificação usuario por usuario


Sim, fica repetindo indefinidamente (looping infinito), como o script que você postou.....
Qdo chega na ultima linha de "$lsusers", retorna para a linha nº 1.
A lógica é a mesma do script postado.....
Não quer que faça PERGUNTAS?
Quer o limite de conexões fixado em qto?

mso


seria legal definir e ele salvar isso ( nao sei se é possivel) pq no caso se eu nao responder ele nao repete o processo

==============================================
Sim é possível!!!
Forneça os parâmetros que altero....
Vou EXCLUIR:
"LIMITAR o USUáRIO?"
E
"INFORME o LIMITE: "
Fixa o LIMITE em quanto?


att.:
Marcelo oliver




01 02 03



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts