#!/bin/bash MAIN_ROUTER=odlyd BACK_ROUTER=freebox vpn_is_running () { if systemctl is-active openvpn@$1 &> /dev/null then return 0 else return 1 fi } vpn_start () { vpn_is_running $1 && exit 0 # On n'envoie un mail que toutes les 5 minutes if ! [ -f /tmp/vpn_mail_sent ] || [ $((`date +%s` - `stat -c %X /tmp/vpn_mail_sent`)) -gt 300 ] then touch /tmp/vpn_mail_sent # On utilise restart pour être sûr de ne pas avec de VPN qui traîne if systemctl restart openvpn@$1 then echo "Lancement du vpn $(hostname)<->$1 reussi "'!' exit 0 else echo "Echec de lancement du vpn $(hostname)<->$1 "'!' exit 1 fi else systemctl restart openvpn@$1 &> /dev/null fi } if vpn_is_running $MAIN_ROUTER && fping -q $MAIN_ROUTER.adm.crans.org; then # Le vpn vers odlyd est actif, tout va bien exit 0 fi if fping -q $MAIN_ROUTER.crans.org; then # Si on peut atteindre odlyd, on repasse par odlyd if vpn_is_running $BACK_ROUTER then if ! [ -f /tmp/vpn_mail_sent ] || [ $((`date +%s` - `stat -c %X /tmp/vpn_mail_sent`)) -gt 300 ] then systemctl stop openvpn@$BACK_ROUTER else systemctl stop openvpn@$BACK_ROUTER &> /dev/null fi fi vpn_start $MAIN_ROUTER fi if vpn_is_running $BACK_ROUTER && fping -q $MAIN_ROUTER.adm.crans.org; then # On ne peut pas atteindre odlyd et on passe par la freebox, c'est # normal exit 0 fi if fping -q $BACK_ROUTER.crans.org; then # On tente de passer par la freebox vpn_start $BACK_ROUTER fi