scripts/secours/check-vpn-from-ovh

61 lines
1.6 KiB
Bash
Executable file

#!/bin/bash
MAIN_ROUTER=odlyd
BACK_ROUTER=freebox
vpn_is_running () {
if systemctl is-active openvpn@$1
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