Em vez de eliminar o processo, você pode verificar algo como tenta-antes-desconecte no arquivo de configuração. O que eu costumo fazer para restringir as tentativas de login do ssh.
Temos uma interface de linha de comando para fazer logon em um sistema assim:
$ cli -u username -p password
No caso de a senha errada ser fornecida, a mensagem que recebemos é "Credentials incorrect" (Credenciais incorretas) e, em seguida, ela aguarda a digitação correta da senha e não é encerrada. Se a senha correta for fornecida, ela não fornecerá nenhuma mensagem e fará login diretamente.
Estou procurando encerrar o comando caso a senha esteja errada, em vez de esperar pela entrada do usuário.
A ideia é procurar pela palavra-chave Credentials e, se for encontrada, então, mata o comando:
$ cli -u username -p password | grep Credentials
Como eu faria isso?
Em vez de eliminar o processo, você pode verificar algo como tenta-antes-desconecte no arquivo de configuração. O que eu costumo fazer para restringir as tentativas de login do ssh.
Eu modelei seu utilitário cli
da seguinte forma:
$ cat cli
#!/bin/bash
while IFS= read -r line; do
if [ "$line" == "password" ]; then
break
else
echo 'Credentials incorrect'
fi
done
grep
Você pode usar grep -m1 ...
para sair depois que a primeira correspondência for encontrada. O -m1
significa parar após o 1º jogo.
$ ./cli | grep -m 1 "Credential"
blah
Credentials incorrect
$
boa senha
$ ./cli | grep -m 1 "Credential"
password
$
sed
Uma abordagem semelhante usa sed
:
$ ./cli | sed '/Credential/ q'
blah
Credentials incorrect
$
boa senha
$ ./cli | sed '/Credential/ q'
password
$