Você poderia colocar algo assim em seu arquivo /etc/rc.local
(não testado):
{ while ! ping -c 1 -W 1 8.8.8.8; do sleep 1; done; /home/youruser/Desktop/rpiMainProgram > /home/youruser/Desktop/rpiMainProgram.log 2>&1; }&
ping -c 1 -W 1 8.8.8.8
: envia um pacote de ping e espera 1 segundo pelo seu retorno
O loop while
continua enquanto o comando ping
sair com um código de status > 0, ou seja, desde que falhe.
Quando você tiver uma conexão de rede e puder efetuar ping de 8.8.8.8
com êxito, o loop parará e executará seu programa (verifique se chamá-lo assim faz diferença, por exemplo, com pwd
).
Com o {}
, transformamo-lo em um tipo de comando singular, para que possamos colocar tudo em segundo plano usando &
. Caso contrário, bloquearia o restante de /etc/rc.local
até você ter uma rede.
Pode haver soluções mais elegantes, mas eu tenho algo parecido com isso no meu Pi.