Продолжить удаленный скрипт bash - PullRequest
0 голосов
/ 23 мая 2018

Я только ученик на первом курсе, и это мой первый пост, поэтому, пожалуйста, потерпите меня.

Прежде всего: мы используем Raspberry Pi с растягивающим распределением.

С каждым обновлением, которое мы выпускаем, мы должны делать тесты выпуска.Обычно нужно выполнять определенные команды вручную и удаленно на Pi через ssh и сравнивать результат с тем, каким он должен быть, если работает новый выпуск.В настоящее время я работаю над автоматизацией этого процесса с помощью bash-скрипта, который пока работает нормально.

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

Теперь я знаю, что вы можете просто написать cronjob, который выполняет скрипт @reboot, или написать функцию в вашем скрипте, которая проверяет состояния и затем выполняет "после"-reboot »часть вашего скрипта, но все эти решения требуют, чтобы скрипты были локально на Pi, если я правильно их понял.Но я должен запускать свои scipts удаленно через ssh с моего офисного компьютера с использованием параметров конфигурации и передачи и т. Д.

Это то, что я запускаю в моем стартовом скрипте:

#!/bin/bash
CONFIG=/home/user/Schreibtisch/config.sh
source $CONFIG
echo "Release AutoTest V0.7 on $DEVICE_ID"
echo "Make sure an external WLAN chip is plugged in"
read -p "Press ENTER to start"
ssh root@$DEVICE_IP "bash -s" -- < /home/user/Schreibtisch/auto_test.sh "$PMD" "$BTDMD" "$AND TEN MORE PARAMETERS..."

exit 0

«auto_test.sh» - это фактический скрипт, который запускается на Pi.

Так есть ли способ «сказать» моему локальному скрипту, что он должен дождаться перезагрузки и затем запустить следующую часть или что-то еще?Или просто возможность вернуться к моему «auto_start.sh», для которого я мог бы написать часть после перезагрузки и дать Пи второй сценарий после 40 или более сна.(Или, еще лучше, обнаружение, когда Pi снова запускается, но это то, над чем я могу работать самостоятельно).

1 Ответ

0 голосов
/ 23 мая 2018

После выполнения сценария на Raspberry Pi вы можете пинговать Pi, пока он не ответит:

#!/bin/bash
CONFIG=/home/user/Schreibtisch/config.sh
source $CONFIG
echo "Release AutoTest V0.7 on $DEVICE_ID"
echo "Make sure an external WLAN chip is plugged in"
read -p "Press ENTER to start"
ssh root@$DEVICE_IP "bash -s" -- < /home/user/Schreibtisch/auto_test.sh "$PMD" "$BTDMD" "$AND TEN MORE PARAMETERS..."
while ! ping -c 1 -n -w 1 DEVICE_IP &> /dev/null; do :; done

# Execute whatever you want after the reboot

exit 0
...