Como usar o bash / esperar para verificar se um login SSH funciona
Minha equipe gerencia muitos servidores e a diretiva da empresa determina que as senhas nesses servidores sejam alteradas a cada duas semanas. Às vezes, nosso banco de dados oficial de senhas fica desatualizado por qualquer motivo (as pessoas esquecem de atualizá-las, geralmente), mas às vezes não conseguimos identificá-lo até meses depois, já que não usamos consistentemente todos os servidores.
Eu quero escrever um script que vai raspar as senhas do banco de dados e usar essas senhas para tentar um login (ssh) para cada servidor todas as noites e enviar um email com os resultados para a equipe. Eu sou capaz de raspar o banco de dados para obter informações de login, masNão sei como verificar se o login do ssh foi bem-sucedido ou não.
Eu não posso usar autenticação de chave pública para esta tarefa. Euquer autenticação de senha para que eu possa verificar as senhas.
Desativar a autenticação de chave pública especificando o seguinte arquivo:
PasswordAuthentication=yes
PubkeyAuthentication=no
Minhas tentativas no script de espera:
# $1 = host, $2 = user, $3 = password, $4 = config file
expect -c "spawn ssh $2@$1 -F $4
expect -re \".*?assword.*?\"
send \"$3\n\"
...
send \'^D\'"
Eu pensei que talvez o status de saída pudesse indicar o sucesso? Não foi possível encontrar nada nas páginas do manual.