Linux ожидают новой строки - PullRequest
       4

Linux ожидают новой строки

0 голосов
/ 22 сентября 2018

У меня есть пользовательский пакет, который я хочу установить автоматически в моем докере, используя функцию ожидаемого.

Первое, что просит пакет, это нажать Enter, чтобы продолжить, затем он печатает еще 2 пустые строки и ждетдля ввода.

enter image description here

Мой сценарий ожидания:

#!/usr/bin/expect -f

set timeout -1

spawn ./install

expect "\n"
send -- "\n"

Но, как вы можете видеть на изображении, он просто работаетустановщик и завершает работу.

Я попытался удалить expect "\n", поэтому будет выполняться только send -- "\n", но теперь даже сообщение об установке не появляется (пробовал с set timeout 1000 перед отправкой, и оно также не работало)

Есть идеи?

PS: Это ссылка на пакет, если кто-то хочет попробовать его:

https://www.bayometric.com/downloads/digital-persona/DP_UareU_Linux223_20140429.2.zip

(установщик находится внутри DP-UareU-RTE-2.2.3-1.20140429_1533.tar.gz)

1 Ответ

0 голосов
/ 23 сентября 2018

expect "\n" точно соответствует переводу строки, я думаю, это не то, что отправляет ваша программа.

Чтобы дождаться приглашения оболочки, вы можете использовать expect "%" или expect "*", чтобы сопоставить что угодно.

Если вам нужно убедиться, что вы имеете дело с правильным приглашением, вы можете использовать что-то вроде expect "*Linux Installation*".

Также не отправляйте \n, но \r для введите ключ:

#!/usr/bin/expect

spawn ./install

expect "*Linux Installation*"
send "\r"

expect eof

Обратите внимание, что по умолчанию установлен флаг -gl для соответствия шаблону глобуса , но вы также можете использовать флаг -re для регулярное выражение совпадение.

...