При использовании сценария ожидания при загрузке вывод списка строк сокращается. Как увеличить буфер ожидания или терминала при загрузке?

[ ecode = 0 ]должно быть[[ "$ecode" -eq 0 ]]:

  • Двойные скобы
  • Использовать больше цитат™
  • Используйте знак доллара перед переменными, чтобы расширить их([[— это особый случай, когда в этом случае вам строго не нужны знаки доллара или кавычки)
  • Используйте -eqдля целочисленного сравнения

0
14.12.2020, 22:42
2 ответа

Когда вы выполняете spawn...в expect, создается pty-терминал, который наследует настройки текущего tty, в котором запущена программа.

Таким образом, при тестировании скрипта в терминале, например, с 24 строками (строками ), программа vpn увидит это и будет действовать соответствующим образом, запрашивая ввод через каждые 24 строки вывода.

Если теперь вы запускаете свой скрипт из модуля systemd, например, нет tty для наследования настроек, а количество строк и столбцов по умолчанию равно 0. Поэтому программа vpn ведет себя по-другому.

Решение состоит в том, чтобы явно указать желаемое количество строк и столбцов перед выполнением spawn. В expectэто делается установкой переменной перед строкой spawn...:

set stty_init "rows 24 cols 80"

Возможно, вы даже сможете установить rows 999и избежать всех приглашений на страницу.

1
18.03.2021, 22:42

Я не понимаю разницы между загрузкой и не -загрузкой.

Тем не менее, это то, как зациклиться на этом «нажмите ввод»:

expect {
    -exact "press enter for next page" {
        send -- "\r"
        exp_continue
    }
    -exact "Enter a number to select the location\r"
}
send -- "2\r"
1
18.03.2021, 22:42

Теги

Похожие вопросы