Я пытаюсь выполнить простую работу через ожидание. Я хочу создать ключи ssh с помощью команды "ssh-keygen" на виртуальных машинах Linux. Мой код ниже ожидаемого выглядит прямым, но он не работает:
#!/usr/bin/expect
spawn ssh-keygen -t rsa
expect -exact "Enter file in which to save the key (/root/.ssh/id_rsa): "
send -- "\r"
expect -exact "Enter passphrase (empty for no passphrase): "
send -- "\r"
expect -exact "Enter same passphrase again: "
send -- "\r"
Я не хочу использовать парольную фразу. следовательно, набрав "\r"
для действия клавиши «Enter».
Я попытался запустить этот код с "#!/usr/bin/expect -d"
и обнаружил, что он никогда не совпадает со строками, которые я упомянул. что-то вроде ниже:
...
expect: does "" (spawn_id exp6) match exact string "Enter file in which to save the key (/root/.ssh/id_rsa): "? no
....
ТАК Я бы предположил, что он не может соответствовать шаблону, мой скрипт не работает.
Вопрос в том, почему он не может соответствовать шаблону. Я использую "-exact"
, но он не соответствует шаблону. Я пытался поиграть с "-re"
, но я думаю, что я не очень хорош в регулярных выражениях TCL.
Не могли бы вы помочь.
Спасибо.