Я хочу автоматизировать процедуру перепрошивки Broadcom CFE, используя Expect и Screen. У меня есть одна проблема: как перезагрузить плату и принудительно перевести ее в режим CFE автоматически.
В интерактивном режиме, когда плата перезагружается, вы продолжаете нажимать CTRL+C, пока не увидите:
"Автозапуск отменен через Ctrl-C"
Но я не знаю, как это запрограммировать в Expect.
Одним из аспектов является то, что вам нужно быстро нажать CTRL+C, иначе система перейдет к обычной процедуре загрузки. Поэтому обычно я продолжаю нажимать CTRL + C (не отпуская их) при перезагрузке коробки ... В ожидании «exec sleep x» находится в «секундах», кажется, мне нужно использовать «после x» (что в миллисекундах). .но пока не разобрался как сделать петлю...
Следующее, кажется, не работает для меня:
#!/usr/bin/expect
set REBOOT_LOG "BCM97430B0 CFE v3.22"
set CFE_PROMPT "CFE> "
set OTV_PROMPT "# "
set CTRL_C \x03 ;# http://wiki.tcl.tk/3038
set CTRL_C_ACCEPTED "Automatic startup canceled via Ctrl-C"
set timeout -1
# get connected to the serial port
spawn screen /dev/ttyS0 115200
# press return several times and reboot
send "\r\r\r\r"
expect {
$CFE_PROMPT { send "reboot\r" }
$OTV_PROMPT { send "reboot\r" }
}
# entering the CFE mode by sending CTRL-C
expect {
$CTRL_C_ACCEPTED {
break
}
after 10 {
send $CTRL_C
exp_continue
}
}
Спасибо... /бруин