Я пытаюсь выполнить простую работу через expect. Я хочу создать ключи 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"
для действия клавиши «Ввод». Я попытался запустить этот код с "#!/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.
Не могли бы вы помочь. Спасибо.