ユーザ名、例えば[email protected]
。しかし、このコマンドは、少なくとも1つのパスワードクエリを必要とし - 時々 - タイプの追加の相互作用:
The authenticity of host 'xxx (xxx)' can't be established.
RSA key fingerprint is xxx.
Are you sure you want to continue connecting (yes/no)?
は、私がここにexpect
と私の問題を解決しようとした、としている私は、すべてのコメントを(これまでに持っているものあなたが最初のやりとりを正しく捕まえる限りは動作しますが、2番目の対話は正しく捕捉されます。正しいパスワード(fg4,57e4h)が使用されているようですが、ホストマシンにログインしようとすると、パスワードを尋ねられます。私はまた、.ssh/authorized_hosts
のエントリが作成されていないことを確認しました。使用されたパスワードも絶対に正しいです。ログインしてコピーして貼り付けるだけです。私はどちらもTCL午前も専門家を期待していますが、期待しているようだssh-copy-id
コマンドに正しい文字列(すなわち、パスワード)を送信し、
./expect_keygen XXX
spawn ssh-copy-id XXX
parent: waiting for sync byte
parent: telling child to go ahead
parent: now unsynchronized from child
spawn: returns {3602}
expect: does "" (spawn_id exp6) match glob pattern "*re you sure you want to continue connecting"? no
"*assword*"? no
XXX's password:
expect: does "XXX's password: " (spawn_id exp6) match glob pattern "*re you sure you want to continue connecting"? no
"*assword*"? yes
expect: set expect_out(0,string) "XXX's password: "
expect: set expect_out(spawn_id) "exp6"
expect: set expect_out(buffer) "XXX's password: "
send: sending "fg4,57e4h\r" to { exp6 }
:スクリプトは次のexp_internal 1
出力を任意のエラーを作成しますが、生成されません。しかし、上記の期待コマンドであるにもかかわらず、問題がなければならない公開鍵をホストにコピーする。
なぜ['ssh-copy-id'](http://man.cx/ssh-copy-id)を使用しないのですか?それがそれのためのものです。 –
これはタスクを簡略化します。変更なしで自分のコードスニペットで動作しますか?オプションのyes/noの質問については、これも処理されますか(私は今確認できません)。 – Alex
スクリプトの最後にプロンプトが表示されるようにしてください。あなたのスクリプトでは、生成されたプロセスはパスワードを送信した直後に終了し、ssh-id-copyプロシージャ全体が完了することは保証されません。 – asdone