Как использовать Bash / Ожидайте, чтобы проверить, работает ли вход SSH

Моя команда управляет многими серверами, и политика компании требует, чтобы пароли на этих серверах менялись каждые пару недель. Иногда наша официальная база паролей по какой-либо причине устаревает (люди обычно забывают ее обновить), но иногда мы не можем идентифицировать ее до нескольких месяцев спустя, поскольку мы не всегда используем каждый сервер.

Я хочу написать скрипт, который будет вычищать пароли из базы данных и использовать эти пароли для попытки (ssh) входа на каждый сервер каждую ночь, и отправлять письмо с результатами в команду. Я могу очистить базу данных для входа в систему информации, ноI'm not sure how to check whether ssh login was successful or not in expect.

I cannot use public key authentication for this task, яwant аутентификация по паролю, чтобы я мог проверить пароли.

Я отключаю аутентификацию с открытым ключом, указав следующий файл:

PasswordAuthentication=yes
PubkeyAuthentication=no

Мои попытки ожидаемого сценария:

# $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\'"

Я думал, может быть, статус выхода может указывать на успех? Не могу найти ничего на страницах руководства.

Ответы на вопрос(4)

Ваш ответ на вопрос