Eu tenho um script que faz login em um servidor. Independentemente do sucesso (ou seja, se a senha é válida ou não), o script será encerrado com o código de retorno 0 e o texto:
Error login failed.
Gostaria de tentar novamente o login se isso acontecer executando outro comando, mas por causa do código de retorno não consigo.
Se eu canalizar a saída para grep para 'Erro' para que eu possa executar um comando baseado nisso, a caixa de diálogo de login não aparecerá no terminal.
Existe alguma maneira de contornar isso?
Pseudocódigo, pois é para trabalho:
loginCmd && echo "$?"
username:
password:
Error login failed.
0
Atualizar
Tentei usar uma ideia de um comentarista, mas não consigo capturar o texto com 'Erro' pois essa linha ocorre após a conclusão do comando...
Aqui está o que realmente parece, com senha incorreta:
agent registration
username: xyz
password:
Error login failed.
Eu tentei isso:
result=$(loginCmd | tee /dev/tty)
grep -q 'Error' <<< "$result" &&
loginCmd
A string de erro é exibida após a conclusão do comando, portanto result
não a captura:
result=agent registration
Então acho que não há como capturar essa string?
Error login failed.
Alguma ideia?
Idealmente, em caso de falha de login, o script retornaria 1 ou teria algum tipo de mecanismo de nova tentativa, mas isso não acontece e não posso mudar isso, é um script da empresa e isso afeta apenas o terminal, não a GUI, que é o que os clientes usam .