1
 VAR1=$(expect -c '
     spawn ssh-keygen -t rsa -f '"$SSH_KEY_PATH_ID"' -N '' -q 
     expect -exact "Generating public/private rsa key pair.\r
     Enter file in which to save the key (/root/.ssh/id_rsa):"
     sleep 5
     send "\r";
     expect "Enter passphrase (empty for no passphrase): "
     sleep 5
     send "\r";
     expect "Enter same passphrase again: "
     sleep 5
     send  "\r";
     ')

ssh-keygen の質問に応答する bash のコマンドを次に示します。このコードは、「スリープ」行を削除しても私のマシンでは機能しますが、別のマシンでは機能しません。エラーが発生します。

  send: spawn id exp6 not open
     while executing
   "send "\r""

何が問題ですか

更新:ubuntu ではうまく動作しますが、Centos ではうまく動作しません。期待されるバージョンは同じです

更新:私はそれを修正しました.問題は、_Nオプションを使用するとパスフレーズパスが提供され、このコードを使用すると「」として指定されます.その後、間違って動作するコードが期待されます.

   VAR1=$(expect -c '
     spawn ssh-keygen -t rsa -f '"$SSH_KEY_PATH_ID"' -q 
     expect -exact "Generating public/private rsa key pair.\r
     Enter file in which to save the key (/root/.ssh/id_rsa):"
     send "\r";
     expect "Enter passphrase (empty for no passphrase): "
     send "\r";
     expect "Enter same passphrase again: "
     send  "\r";
     ')
4

1 に答える 1

0

Make sure your file has POSIX line endings (\r) and not DOS line endings (\r\n)

于 2012-08-22T15:12:52.147 に答える