Shell Script - Como fazer repetir eternamente se erro houve?! [RESOLVIDO]

1. Shell Script - Como fazer repetir eternamente se erro houve?! [RESOLVIDO]

Thiago Boeira
tcboeira

(usa Debian)

Enviado em 25/07/2019 - 11:23h

Amigos, mais uma vez recorro a ajuda de todos depois de exaurir em pesquisas e estudos e mais testes todos sem sucesso.

Estou construindo um script simples - MUITO SIMPLES - , cujo tem o objetivo real é de conferir se o usuário existe no AD. O mais proximo que consegui é onde testo login e senha - o que me ajuda 50% das necessidades.

Diante disto, gostaria de saber como fazer repetir eternamente se erro houve?! Hoje, ele repete uma unica vez: DIgito os dados, erro ocorre, ele repete. Insisto com dados errados, ele até informa erro, mas não retorna para opção de digitar os dados - que é o cenário que eu desejo.

O Script é esse abaixo:
#!/bin/sh
_TESTEAD () {
read -p "USER AD:" Tuser
read -p "SENHA:" TPASSW1

echo $TPASSW1 > 4

echo "usuario: $Tuser"
echo "senha: $TPASSW1"

cat 4 | kinit $Tuser
}
check=$(echo $?)
_TESTEAD

while true;
do
if [ $check -eq 0 ];
then
echo "Sua máquina conectou com sucesso! \033[0;32m [Ok] \033[0m "
break
else
echo "Erro de usuario ou senha. Falha ao se conectar com o Active Directory \033[0;31m [fail] \033[0m "
_TESTEAD
break
fi
done
sudo rm -r 4 > /dev/null 2>&1

Minha saída é essa:

$ ./test
USER AD:thutuht
SENHA:fdfd
usuario: thutuht
senha: fdfd
kinit: Client '[email protected]' not found in Kerberos database while getting initial credentials
Erro de usuario ou senha. Falha ao se conectar com o Active Directory [fail]
USER AD:dfsdfsd
SENHA:re4r2r
usuario: dfsdfsd
senha: re4r2r
kinit: Client '[email protected]' not found in Kerberos database while getting initial credentials


Alguem pode me ajudar com essa situação?
Muito, mas muito agradecido!



  


2. MELHOR RESPOSTA

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 25/07/2019 - 18:42h

tcboeira escreveu:

Amigos, mais uma vez recorro a ajuda de todos depois de exaurir em pesquisas e estudos e mais testes todos sem sucesso.

Estou construindo um script simples - MUITO SIMPLES - , cujo tem o objetivo real é de conferir se o usuário existe no AD. O mais proximo que consegui é onde testo login e senha - o que me ajuda 50% das necessidades.

Diante disto, gostaria de saber como fazer repetir eternamente se erro houve?! Hoje, ele repete uma unica vez: DIgito os dados, erro ocorre, ele repete. Insisto com dados errados, ele até informa erro, mas não retorna para opção de digitar os dados - que é o cenário que eu desejo.

O Script é esse abaixo:
#!/bin/sh
_TESTEAD () {
read -p "USER AD:" Tuser
read -p "SENHA:" TPASSW1

echo $TPASSW1 > 4

echo "usuario: $Tuser"
echo "senha: $TPASSW1"

cat 4 | kinit $Tuser
}
check=$(echo $?)
_TESTEAD

while true;
do
if [ $check -eq 0 ];
then
echo "Sua máquina conectou com sucesso! \033[0;32m [Ok] \033[0m "
break
else
echo "Erro de usuario ou senha. Falha ao se conectar com o Active Directory \033[0;31m [fail] \033[0m "
_TESTEAD
break
fi
done
sudo rm -r 4 > /dev/null 2>&1

Minha saída é essa:

$ ./test
USER AD:thutuht
SENHA:fdfd
usuario: thutuht
senha: fdfd
kinit: Client '[email protected]' not found in Kerberos database while getting initial credentials
Erro de usuario ou senha. Falha ao se conectar com o Active Directory [fail]
USER AD:dfsdfsd
SENHA:re4r2r
usuario: dfsdfsd
senha: re4r2r
kinit: Client '[email protected]' not found in Kerberos database while getting initial credentials


Alguem pode me ajudar com essa situação?
Muito, mas muito agradecido!

Boa tarde Tcboeira.
Desconheço o comando "kinit"...parto do principio que está certo....

Tem break no if e no else.... de qquer forma, o laço é interrompido.....

Sugestão:
#!/bin/sh

_TESTEAD () {
read -p "USER AD: "Tuser
read -p "SENHA: " TPASSW1
echo -e "usuario: $Tuser\nsenha: $TPASSW1"
echo -n "$TPASSW1"|kinit $Tuser
check="$?"
}

_TESTEAD

while :;do
if [ $check -eq 0 ];then
echo "Sua máquina conectou com sucesso! \033[0;32m [Ok] \033[0m "
break
else
echo "Erro de usuario ou senha. Falha ao se conectar com o Active Directory \033[0;31m [fail] \033[0m "
_TESTEAD
fi
done


Importante => echo -e "$(lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p')"
Att.: Marcelo Oliver

3. Re: Shell Script - Como fazer repetir eternamente se erro houve?! [RESOLVIDO]

Alberto Federman Neto.
albfneto

(usa Sabayon)

Enviado em 25/07/2019 - 17:13h

Observação. Moderei seu Post e modifiquei um pouco o título;

Isso é para Galera dqui, os que são programadores em Shell Script, enxerguem o post mais fácilmente.

¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨
Albfneto,
Ribeirão Preto, S.P., Brasil.
Usuário Linux, Linux Counter: #479903.
Distros Favoritas: Sabayon, Gentoo, openSUSE, Mageia e OpenMandriva.


4. Re: Shell Script - Como fazer repetir eternamente se erro houve?! [RESOLVIDO]

Thiago Boeira
tcboeira

(usa Debian)

Enviado em 25/07/2019 - 17:14h

Muito Obrigado.


5. Re: Shell Script - Como fazer repetir eternamente se erro houve?! [RESOLVIDO]

Thiago Boeira
tcboeira

(usa Debian)

Enviado em 26/07/2019 - 10:59h

Marcelo, muito obrigado... Obrigado mesmo...
Estou a revisar onde eu errei, e com tuas informações ficou muito mais evidente a logica do funcionamento do Script
Muito agradecido mesmo!!!



6. Re: Shell Script - Como fazer repetir eternamente se erro houve?! [RESOLVIDO]

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 26/07/2019 - 16:57h


tcboeira escreveu:

Marcelo, muito obrigado... Obrigado mesmo...
Estou a revisar onde eu errei, e com tuas informações ficou muito mais evidente a logica do funcionamento do Script
Muito agradecido mesmo!!!

Por nada , TCboeira.
Se precisar, é só chamar.
Agradeço pela melhor resposta....
Qual a saída do comando:
echo -n "$senha"|kinit $user 

execute no terminal e poste a saída.
Att.: Marcelo Oliver


7. Re: Shell Script - Como fazer repetir eternamente se erro houve?! [RESOLVIDO]

Thiago Boeira
tcboeira

(usa Debian)

Enviado em 07/08/2019 - 16:06h

Na verdade ele não tem saida se estiver certo ...
Ele só gera o ticket Kerberos

Estando errado, ai sim, gera... depende dai se é senha, nome de usuario e ou se não há comunicação


8. Re: Shell Script - Como fazer repetir eternamente se erro houve?! [RESOLVIDO]

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 08/08/2019 - 14:05h


tcboeira escreveu:

Na verdade ele não tem saida se estiver certo ...
Ele só gera o ticket Kerberos

Estando errado, ai sim, gera... depende dai se é senha, nome de usuario e ou se não há comunicação

Boa tarde Tcboeira.
Dei uma simplificada....
#!/bin/sh

_TESTEAD () {
while :;do
read -p " USER AD: " Tuser
read -p " SENHA: " TPASSW1
echo -e " Usuário: $Tuser\n Senha: $TPASSW1"
if [[ $(echo -n "$TPASSW1"|kinit $Tuser) ]];then
echo -e " Erro de usuário ou senha.\n Falha ao se conectar com o Active Directory! \e[0;31m[fail]\e[0m "
else
echo -e " Sua máquina conectou com sucesso! \e[0;32m[Ok]\e[0m";
break;
fi
done
}

_TESTEAD

Att.: Marcelo Oliver






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts