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";
')