Ожидайте: генерация ключа RSA с использованием сценария ожидаемого не работает - PullRequest
0 голосов
/ 28 января 2019

Я пытаюсь сгенерировать SSH-ключи с помощью команды ssh-keygen с использованием ожидаемого сценария, но кажется, что он не работает (он не может создать новые ключи или перезаписать, если ключи уже присутствуют), я не могу выяснить проблемув этом.

 #!/usr/bin/expect
spawn ssh-keygen
expect { -re "Enter file in which to save the key.*:\s?" {send "\n\r"; exp_continue}
         -re "Overwrite.*\?\s?" {send "y\r"; exp_continue}
         -re "Enter passphrase.*:\s?" {send "\n\r"; exp_continue}
         -re ".*#\s?" { puts "matched propmt"}
}

вывод из выполнения скрипта:

./ssh-key-gen.sh
spawn ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): [root@localhost scripts]#

1 Ответ

0 голосов
/ 28 января 2019

Проблема в send "\n\r" в ответ на «Введите файл, в котором нужно сохранить ключ».\ N принимает имя файла по умолчанию, тогда \ r применяется к «Перезаписать (y / n)?»незамедлительный.Пустой ответ на этот вопрос интерпретируется как «нет», поэтому команда завершается.Избавьтесь от этого \ n, и это сработает.

Но не проще ли просто сделать:

set file [file normalize ~/.ssh/id_rsa]
file delete $file
exec ssh-keygen -f $file -N {}

Это можно сделать простым Tcl, не нужно ожидать.

...