Cómo usar bash / esperar para comprobar si un inicio de sesión SSH funciona

Mi equipo administra muchos servidores, y la política de la compañía dicta que las contraseñas en estos servidores deben cambiarse cada dos semanas. A veces, nuestra base de datos oficial de contraseñas se desactualiza por alguna razón (la gente se olvida de actualizarla, por lo general), pero algunas veces no podemos identificarlo hasta meses después, ya que no usamos todos los servidores de forma consistente.

Quiero escribir un script que elimine las contraseñas de la base de datos y usarlas para intentar un inicio de sesión (ssh) en cada servidor todas las noches y enviar un correo electrónico con los resultados al equipo. Puedo raspar la base de datos para obtener información de inicio de sesión, peroNo estoy seguro de cómo verificar si el inicio de sesión de ssh fue exitoso o no..

No puedo usar la autenticación de clave pública para esta tarea. yoquerer autenticación de contraseña para que pueda verificar las contraseñas.

Deshabilito la autenticación de clave pública especificando el siguiente archivo:

PasswordAuthentication=yes
PubkeyAuthentication=no

Mis intentos en el guión 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\'"

Pensé que tal vez el estado de salida podría indicar el éxito? Sin embargo, no se pudo encontrar nada en las páginas de manual.

Respuestas a la pregunta(4)

Su respuesta a la pregunta