Я хочу использовать Raspberry Pi в качестве VPN-шлюза. RPi подключается к моей домашней сети, а Интернет через wlan0, and
любое подключенное устройство eth0
получает VPN-подключение. Я использую, pptp-linux
чтобы установить VPN-соединение, и все работало нормально на этапе создания прототипа. Однако, чтобы завершить проект, я поставил VPN-соединение в /etc/rc.local
сценарии, чтобы оно запускалось при загрузке. Теперь это терпит неудачу 50% времени. Я подозреваю, что он пытается установить VPN-соединение, прежде чем я правильно подключусь к Интернету через wlan0
. Если это проблема, мне нужно проверить правильность подключения к Интернету в начале, rc.local
прежде чем продолжить работу с остальным сценарием. Есть идеи, как я могу это сделать?
8
sleep 20
перед вашим сценарием. Или лучше, вставьте свой сценарий/etc/network/if-up.d
. Таким образом, скрипт запускается, когда сетевой интерфейс запускается.Ответы:
Из этого ответа StackOverflow ;
источник
прямо с макушки моей головы:
пинг вашего роутера
пинг google.com
ifconfig
вывод grep для действительного шлюза и / или действительного IP-адресаисточник
grep
пинг для правильного ответа. Через некоторое время пока все условия не будут выполнены. Просто пинг не будет делать много. Дживингс процитировал хорошую строку кода.grep
, ping использует коды выхода, чтобы сообщить вам о результатах, что-то вродеping -qc 1 192.168.1.1 && echo ok || echo error
На основе примера кода Jivings и моей собственной логики.
Правильным способом было бы создать функцию, которая возвращает логическое значение для компаратора while. но так должна выглядеть логика оболочки.
источник
Debian теперь использует выскочку. Это, вероятно, гораздо более простой способ сделать это, чем сценарии init.d.
Возможно, вам придется попробовать несколько разных служб, чтобы подождать, но
networking
(если они есть) или,network-manager
возможно, стоит попробовать их в первую очередь.Это для Ubuntu, но вы не должны найти слишком много различий http://upstart.ubuntu.com/cookbook/
источник