继续远程bash脚本

时间:2018-05-23 09:29:50

标签: linux bash raspberry-pi remote-access

我在第一年只是学徒,这是我的第一篇文章,所以请耐心等待。

首先:我们使用带有拉伸分布的Raspberry Pi。

随着我们推出的每一次更新,我们都必须进行发布测试。通常情况下,必须通过ssh手动和远程在Pi上执行某些命令,并将结果与​​应有的结果进行比较(如果新版本有效)。我目前正在使用bash脚本自动执行此过程,该脚本到目前为止工作正常。

但是,在不同的点上,我们必须创建某些启动某些进程的标志文件,然后重新启动Pi,以便检测到标志文件并执行进程。问题是重启当然会结束我的脚本。

现在我知道你可以编写一个执行脚本@reboot的cronjob,或者在脚本中编写一个函数来检查状态,然后执行脚本的“重启后”部分,但这些解决方案都需要如果我理解正确的话,脚本在Pi上是本地的。但我必须通过ssh从办公室PC远程运行我的scipts,并获取配置和切换参数等。

这是我在启动脚本中运行的内容:

#!/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第二个脚本。 (或者更好的是当Pi再次运行时检测到,但这是我可以自己工作的事情。)

1 个答案:

答案 0 :(得分:1)

在Raspberry Pi上执行脚本后,您可以ping 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