ローカルシェルスクリプトがあります。次に、このローカルスクリプトをリモートマシンで実行します。もちろんssh
を使用できますが、それ(ローカルシェルスクリプト)は自動化されたもののようである必要があるため、手動で入力するためのパスワードを要求するべきではありません。そのため、この問題を排除することを期待していたので、スクリプトを実行してもパスワードは要求されません。そして、私のスクリプトは次のようになります。
#!/usr/bin/expect
spawn ssh -o GSSAPIAuthentication=no [email protected] 'bash -s' < /path/to/localscript
expect -timeout 7 "*(yes/no)?" { send "yes\r";exp_continue }
expect -timeout 3 "*d: "
send "qbcrootpass\n"
interact
しかし、それは機能していません。私のシナリオでは、公開キー認証を使用したくないことに注意してください。
Expectを使用して、リモートマシンでローカルスクリプトを実行するのを手伝ってください。
このリダイレクトは、コマンドラインでシェルによって処理されます。 Expectはその方法を理解しません。これは動作するはずです(テストされていません):
set fh [open /path/to/localscript r]
set contents [read $fh]
close $fh
spawn ssh ... "bash -c '$contents'"