Pular para o conteúdo

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

Responder tópico
  • Denunciar
  • Indicar

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

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 'thutuht@DOMAIN.LOCAL' 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 'dfsdfsd@DOMAIN.LOCAL' not found in Kerberos database while getting initial credentials


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

Responder tópico

2. Re: Shell Script - Como fazer repetir eternamente se erro houve?!

Melhor resposta

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 'thutuht@DOMAIN.LOCAL' 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 'dfsdfsd@DOMAIN.LOCAL' 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]

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]

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

Muito Obrigado.

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

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]

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]

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]

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

Responder tópico

Responder tópico

Entre na sua conta para responder.

Fazer login para responder