0

こんにちは、サーバーに ssh ログインする次のスクリプトがあります。

  spawn ssh presnetwork@192.168.244.14
                              expect "*(yes/no)?"
                             send "yes"
                                expect  "password:"
                                  send  "pwd\n"
                              close

正常に動作しますが、「pwd」値をシステムに渡さないため、スクリプトがタイムアウトして終了します。助言がありますか?

4

2 に答える 2

1

「KbdInteractiveAuthentication」を「いいえ」に設定して試すことができます(ssh -o KbdInteractiveAuthentication="no" presnetwork@192....)。SSH はデフォルトでキーボード インタラクティブ認証を使用しますが、これはexpect理解できない可能性があります。

代わりに公開鍵認証を使用することを強くお勧めします (Flo が既に推奨しているように)。扱いやすく、より安全で、より快適です。毎回パスワードを入力せずにリモート サーバーにログインする方法を探しているだけの場合は、ssh-agent を参照してください。デスクトップ セッションでパスワードを1 回入力すると、パスワードが保存されます。本当にパスワードを入力したくない場合は、デスクトップ ログイン パスワードが使用されるpam_sshを使用します。

于 2012-06-12T18:17:49.673 に答える
0

デフォルトでは、expectコマンドはまだインストールされていません。したがって、正しい出力を取得するためにインストールします。

于 2012-06-12T17:55:32.793 に答える