#!/bin/bash vpn_is_running () { local pid_file pid_file=/var/run/openvpn.$1.pid [[ ! -f $pid_file || ! -d /proc/$(< $pid_file) ]] && return 1 || return 0 } 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 if /etc/init.d/openvpn start $1 then echo "Lancement du vpn $(hostname)<->$1 reussi "'!' exit 0 else echo "Echec de lancement du vpn $(hostname)<->$1 "'!' exit 1 fi else /etc/init.d/openvpn start $1 &> /dev/null fi } if vpn_is_running komaz; then # Le vpn vers komaz est actif, tout va bien exit 0 fi if fping -q komaz.crans.org; then # Si on peut atteindre komaz, on repasse par komaz if vpn_is_running freebox if ! [ -f /tmp/vpn_mail_sent ] || [ $((`date +%s` - `stat -c %X /tmp/vpn_mail_sent`)) -gt 300 ] then /etc/init.d/openvpn stop freebox else /etc/init.d/openvpn stop freebox &> /dev/null fi fi vpn_start komaz fi if vpn_is_running freebox; then # On ne peut pas atteindre komaz et on passe par la freebox, c'est # normal exit 0 fi if fping -q freebox.crans.org; then # On tente de passer par la freebox vpn_start freebox fi