Ожидание отправки сценария перезагрузки никогда не обрабатывается машиной - PullRequest
0 голосов
/ 09 июля 2019

Я написал ожидаемый сценарий, который превратит ssh в raspberry pi, а затем в специально созданное радиоустройство.Он будет md5 файл в файловой системе, а затем сравнить его с известным хорошим md5.Затем он выдаст команду для перезагрузки устройства.Проблема в том, что команда "send" reboot \ r "" фактически никогда не обрабатывается радиоустройством.Expect отправляет его на правильный wait_id, но ничего не происходит.

Я попытался переместить строку в сценарии.Самое смешное, что он будет работать, когда он помещен выше вызова md5sum.Если это сделано в любое время после вызова md5sum, оно никогда не будет работать.Я попытался использовать полный путь команды перезагрузки, и без.Ни одна из них не работает.Посмотрите код ниже.Пользовательское радиоустройство работает под управлением старой версии ядра linux.Я написал 2-3 других скрипта, которые работают на этих радиостанциях, и регулярно перезагружаю их во всех скриптах.Однако для этого конкретного сценария он просто не работает (в зависимости от расположения строки кода).

send "md5sum /root/BS5000/bs_config.xml\r\n"
sleep 3

send "/sbin/reboot\r"

Здесь нет сообщений об ошибках, он просто ничего не делает.СЛЕДУЕТ выполнить команду перезагрузки.

1 Ответ

0 голосов
/ 10 июля 2019

Вы, похоже, действительно упускаете часть "ожидаемо" из - Вы действительно должны пытаться писать так:

spawn something
expect something
send something
expect something
...

Итак:

send "md5sum /root/BS5000/bs_config.xml\r"
expect "*"
send "/sbin/reboot\r"
expect eof

Если вы обнаружите, что вам нужно добавить сны, то ваши ожидаемые закономерности неверны. При разработке ожидаемого сценария запустите его с expect -d или добавьте exp_internal 1 в начало кода.

...