vendredi 11 septembre 2009

Déconnexion du VPN: un script pour stopper les échanges



Il arrive parfois qu'une connexion réseau est interrompue lors de l'utilisation d'un VPN.
La connexion réseau est rapidement rétablie sans problème, mais le VPN reste déconnecté.

Il s'agit d'une question de sécurité très gênante pour les utilisateurs.

A ma connaissance ce problème n'est pas résolu sous Ubuntu.

Je me suis donc bricolé un script pour arrêter automatiquement les échanges en cours au travers d'applications comme déluge par exemple.

Ce script s'appuie sur nm-tool d'une part et la commande watch d'autre part.

Premier script: testvpn.sh
Fonctions : verifie si le VPN est actif ou non et selon le cas tue ou non l'application à arrêter

#!/bin/bash
#nécessite nm-tool (inclu avec Network Manager)
#entrer mot de passe root
foo=`gksudo -u root -k -m "entrer votre mot de passe ROOT" /bin/echo "Do you have root access?"`
#initialisation des variables
test1="VPN:"
test4="VPN coupé"
#test de la connection en mode VPN
#cherche le terme VPN: dans la sortie de nm-tool
test0=$(nm-tool | grep -E "VPN" | cut -d" " -f2)
#cherche le nom du VPN dans la sortie de nm-tool
test3=$(nm-tool | grep -E "VPN" | cut -d" " -f4)
#conditions
if [ "$test0" == "$test1" ]
then
text="VPN "$test3" ACTIF"
echo $text
else

text="VPN Coupé"
test5=$(cat logvpn.txt |grep -E "VPN coupé")
notify-send "attention" "$text"
# Test si on trouve l'info que le VPN est coupé dans logvpn.txt pour éviter de Killer inutilement
if [ "$test5" == "$text" ]
then exit
else
#tuer le démon de deluge
sudo killall -TERM deluge
sudo killall -INT deluge
sudo killall -KILL deluge
sudo killall -TERM deluged
sudo killall -INT deluged
sudo killall -KILL deluged
echo $text >> logvpn.txt
date >> logvpn.txt
fi

fi
exit

Deuxième script: watch_vpn.sh
Fonction : lance le premier script text_vpn.sh toutes les 3 secondes

#!/bin/bash
foo=`gksudo -u root -k -m "entrer votre mot de passe ROOT" /bin/echo "Do you have root access?"`
rm logvpn.txt
date >> logvpn.txt
nm-tool | grep -E "VPN" | cut -d" " -f4 >> logvpn.txt
sudo sh -c 'watch -n 3 ./testvpn.sh'
sudo -k
exit

Utilisation:
  • Créer les deux scripts dans un mêmes répertoire,
  • Les rendre exécutables avec chmod +x nom_du_script.sh
  • Lancer dans un terminal le deuxième script watch_vpn.sh
  • Va apparaitre un texte de ce genre, qui indique que le script est actif:
    Every 3,0s: ./testvpn-v2.sh Fri Sep 11 22:06:59 2009

    VPN [IPODAH] ACTIF
  • Ne pas fermer le terminal sauf si on veut arrêter le test du VPN.

Ce script n'est peut être pas beau mais ça marche. Avis aux amateurs si quelqu'un veut l'améliorer , c'est du libre.


2 commentaires:

  1. Testé et plus propre que celui trouvé sur le wiki de korben qui lui fait sauter l'eth0 ... donc je prend ;)

    Pour les suggestions d'améliorations (je suis pas assez calé en prog malheureusement) et histoire que ça soit totalement sympa, un reco automatique avec rallumage de l'appli et ça serait le bonheur.

    Je l'ai utilisé pour amule (suffit de modifier les kill ... les 3 premiers suffisent) et ça roule.

    Je connaissait pas papillon butineur (5 jour que je but sur ce pb) bah maintenant il rentre dans ma collec ;)

    Bonne continuation

    RépondreSupprimer
  2. Sur le même sujet : il y a désormais la possibilité de relancer le VPN en automatique voir ici : http://papillon-butineur.blogspot.com/2010/01/reconnection-automatique-du-vpn-en-cas.html

    RépondreSupprimer