#! /bin/sh ## Fred 07 avril 2004 # Teste l'état des serveurs distants grâce à autostatus (appellé sans arguments) # Permet de passer en connexion par ADSL ou ENS suivant les options fournies ETAT='/usr/scripts/etat.py' # Stoquage de l'état de la connexion ssh () { # Connexion ssh # Utilise la clef $1 pour se connecter à $2 /usr/bin/ssh -o StrictHostKeyChecking=no -i /CRANS/keys/$1 zamok@$2 $1 } source $ETAT if [[ $1 ]] && ([[ $1 -ge -1 ]] && [[ $1 -le 2 ]]) ; then # Attribution du futur état echo "secours=$1" > $ETAT [[ $1 -le 0 ]] && force=-1 [[ $1 -ge 1 ]] && force=1 ( [[ $1 -lt 0 ]] || [[ $1 -gt 1 ]] ) && echo "Mode forcé" elif [[ $1 ]] ; then echo "Argument incorrect" echo "-1 = force la connexion en mode normal" ti_remote echo " 0 = mode automatique, connexion normale" echo " 1 = mode automatique, connexion secours" echo " 2 = force la connexion en mode secours" else : force=0 if [[ $secours -eq -1 ]] ; then echo "Etat forcé en normal" 2>&1 exit 0 elif [[ $secours -eq 2 ]] ; then echo "Etat forcé en secours" 2>&1 exit 0 fi fi # source /root/snmp-community-names if [[ $force -ne -1 ]] && ( [[ $force -eq 1 ]] || (\ ! /usr/sbin/fping -q 216.239.39.104 2>/dev/null && \ ! /usr/sbin/fping -q 213.228.0.42 2>/dev/null && \ ! /usr/sbin/fping -q 217.12.3.11 2>/dev/null && \ ! /usr/sbin/fping -q 195.101.94.80 2>/dev/null ) ) ; then if [[ $secours -ge 1 ]] ; then echo "Reste en mode secours" exit 0 else : echo "Passage en secours" 1>&2 [[ $force -eq 1 ]] || echo "secours=1" > $ETAT ssh sila-mode-secours sila python /usr/scripts/gestion/secours.py 1 fi else if [[ $secours -le 0 ]] ; then echo "Reste en mode normal" exit 0 else : echo "Passage en mode normal" 1>&2 [[ $force -eq -1 ]] || echo "secours=0" > $ETAT ssh sila-mode-normal sila python /usr/scripts/gestion/secours.py 0 fi fi # Génération des fichiers et reload localement /etc/init.d/postfix reload /etc/init.d/bind9 reload