Quero usar o Raspberry Pi como um gateway de VPN. O RPi se conecta à minha rede doméstica e a Internet por wlan0, and
qualquer dispositivo conectado eth0
obtém uma conexão VPN. Estou usando pptp-linux
para fazer a conexão VPN e tudo funcionou bem durante meu estágio de prototipagem. No entanto, para concluir o projeto, coloquei a conexão VPN no /etc/rc.local
script para que inicie na inicialização. Agora ele falha 50% do tempo. Eu suspeito que ele esteja tentando a conexão VPN antes de eu estar conectado corretamente à Internet via wlan0
. Se esse for o problema, preciso de um teste para uma conexão à Internet válida no início de rc.local
antes de prosseguir com o restante do script. Alguma idéia de como eu poderia fazer isso?
8
sleep 20
antes do seu script. Ou melhor, coloque seu script/etc/network/if-up.d
. Dessa forma, o script é executado quando a interface de rede é ativada.Respostas:
A partir desta resposta StackOverflow ;
fonte
bem em cima da minha cabeça:
sibile seu roteador
sibile google.com
ifconfig
saída grep para gateway válido e / ou endereço IP válidofonte
grep
dos pings para uma resposta válida. Em um loop while, até que todas as condições sejam atendidas. Apenas o ping não fará muito. Jivings citou uma boa linha de código.grep
, de ping usa códigos de saída para informá-lo sobre os resultados, algo comoping -qc 1 192.168.1.1 && echo ok || echo error
Baseado no código de exemplo de Jivings e em algumas de minhas próprias lógicas.
A maneira correta seria criar uma função que retorne um booleano no comparador while. mas é assim que a lógica do shell deve se parecer.
fonte
O Debian agora usa upstart. Essa é provavelmente uma maneira muito mais simples de fazer isso do que o script init.d.
Pode ser necessário tentar alguns serviços diferentes para aguardar, mas
networking
(se houver) ounetwork-manager
pode ser bom tentar primeiro.Isso é para o Ubuntu, mas você não deve encontrar muitas diferenças http://upstart.ubuntu.com/cookbook/
fonte