私のチームは多くのサーバーを管理しており、会社のポリシーでは、これらのサーバーのパスワードは数週間ごとに変更する必要があると定められています。パスワードの公式データベースが何らかの理由で古くなることがありますが(通常、人々はパスワードを更新するのを忘れます)、すべてのサーバーを一貫して使用しているわけではないため、数か月後までこれを特定できないことがあります。
データベースからパスワードを取得するスクリプトを作成し、それらのパスワードを使用して毎晩各サーバーへの(ssh)ログインを試行し、結果を記載した電子メールをチームに送信したいと思います。ログイン情報のためにデータベースをスクレイプすることはできますが、sshログインが期待どおりに成功したかどうかを確認する方法がわかりません。
このタスクに公開鍵認証を使用できません。パスワードを確認できるように、パスワード認証が必要です。
次のファイルを指定して、公開鍵認証を無効にします。
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\'"
終了ステータスが成功を示しているのではないかと思いました。しかし、manページには何も見つかりませんでした。