SSHサーバーにプログラムでログインし、プロンプトをキャプチャする方法は?

SSHサーバーにプログラムでログインし、プロンプトをキャプチャする方法は?

ユーザーにパスワードプロンプトを表示せずにsshを介してリモートサーバーにログインするスクリプトを作成しようとしています(リモートサーバーは私が制御できず、キー認証を使用できません)。

通常、コマンドにパスワードを渡すとうまく機能しますが、3ヶ月ごとにパスワードを変更してスクリプトを破るパスワードプロンプトが表示されるように要求します。 STDOUTとSTDERRを介してパスワードプロンプトをキャプチャしようとしましたが、どちらも送信されませんでした。プロンプトをキャプチャする方法や応答を再送信する方法がわかりません。

テストでパスワードなしでsshingを試みましたが、同じ基本動作を得ました。

ssh [email protected] 2> /dev/null

パスワードプロンプトは引き続き表示されます。

これも本当ssh -Tです。ssh -t

どんなアドバイスも本当にありがとうございます。

乾杯

ベストアンサー1

使用expect、または他の言語で実装されています(Wikipediaには現在これらのリストがあります)。expectこれはまさにこのタイプの端末自動化タスクのために設計されています。この自動化をブートストラップする最速の方法は次のとおりです。

autoexpect ssh [email protected]

次に、必要に応じてキーボードを混在させ、sshを終了して生成されたスクリプトファイルを確認します。

おすすめ記事