Quiero usar Raspberry Pi como una puerta de enlace VPN. El RPi se conecta a mi red doméstica e Internet a través de wlan0, and
cualquier dispositivo conectado eth0
obtiene una conexión VPN. Estoy usando pptp-linux
para hacer la conexión VPN y todo funcionó bien durante mi etapa de creación de prototipos. Sin embargo, para completar el proyecto, puse la conexión VPN en el /etc/rc.local
script para que comience en el arranque. Ahora falla el 50% del tiempo. Sospecho que está intentando la conexión VPN antes de conectarme correctamente a Internet a través de wlan0
. Si este es el problema, necesito una prueba para una conexión a Internet válida al comienzo rc.local
antes de continuar con el resto del script. ¿Alguna idea de cómo podría hacer esto?
8
sleep 20
antes de su secuencia de comandos. O mejor, pon tu guión/etc/network/if-up.d
. De esa forma, el script se ejecuta una vez que la interfaz de red sube.Respuestas:
De esta respuesta de StackOverflow ;
fuente
justo en la parte superior de mi cabeza:
haga ping a su enrutador
ping google.com
ifconfig
salida grep para puerta de enlace válida y / o dirección IP válidafuente
grep
los pings para una respuesta válida. En un bucle while hasta que se cumplan todas las condiciones. Hacer ping no hará mucho. Jivings citó una buena línea de código.grep
, el ping usa códigos de salida para informarle sobre los resultados, algo así comoping -qc 1 192.168.1.1 && echo ok || echo error
Basado en el código de muestra Jivings y parte de mi propia lógica.
La forma correcta sería crear una función que devuelva un valor booleano en el comparador while. pero así es como debería verse la lógica de shell.
fuente
Debian ahora usa advenedizo. Esta es probablemente una forma mucho más simple de hacerlo que los scripts init.d.
Es posible que deba probar algunos servicios diferentes para esperar, pero
networking
(si está allí) onetwork-manager
podría ser uno bueno para probar primero.Esto es para Ubuntu, pero no debería encontrar demasiadas diferencias http://upstart.ubuntu.com/cookbook/
fuente