Ожидайте, что скрипт выберет параметры в меню GRUB

Можно ли выбрать параметры в меню GRUB, чтобы выбрать соответствующий параметр для загрузки устройства?

У меня есть последовательное соединение с устройством, и я пишу сценарий ожидания для отправки клавиши DOWNARROW для выбора соответствующей опции в меню GRUB при загрузке. Но почему-то не получается.

expect "GRUB loading."
#down arrow
send {^[\[B}

send "\r"
send "\r"

person codingfreak    schedule 03.03.2016    source источник
comment
^[\[B, вероятно, не то, что вы хотите отправить. Попробуйте send \x1F   -  person Johannes Kuhn    schedule 03.03.2016
comment
По крайней мере, в Linux это ^[[B для стрелки вниз. Я даже пробовал с \x1F и все равно сталкиваюсь с той же проблемой   -  person codingfreak    schedule 03.03.2016
comment
Вы можете как-то увидеть, какие байты будут отправлены, если вы нажмете клавишу вниз?   -  person Johannes Kuhn    schedule 03.03.2016
comment
Я запустил автоожидание, и он говорит ^[[B   -  person codingfreak    schedule 03.03.2016


Ответы (2)


Попробовав несколько методов выдачи «стрелки вниз» с помощью expect, мне удалось заставить это работать с помощью grub2:

send \003N

Это отправляет Ctl+N, который работает как вторичная стрелка вниз, лучше видно и объяснено здесь: https://unix.stackexchange.com/questions/137323/grub2-without-arrow-keys

person Christian    schedule 21.06.2017

Поскольку вы используете фигурные скобки, вам не нужно экранировать [

send -- {^[[B}  ;# where "^[" is entered with ctrl-V Esc

Или использовать двойные кавычки, где открывающую скобку нужно экранировать, но проще набрать экранирующий символ.

send -- "\033\[B"
person glenn jackman    schedule 03.03.2016
comment
Даже пробовал вышеперечисленные варианты... и вроде не работает. Почему-то в меню grub не выбирается второй вариант - person codingfreak; 04.03.2016
comment
Попробуйте использовать autoexpect для записи сеанса вручную и посмотрите, что получится. - person glenn jackman; 04.03.2016
comment
Я попробовал autoexpect... где он использует только send {^[[B}} - person codingfreak; 09.03.2016