Forum Freedom-IP VPN

Forum d'entraide de la communauté Freedom-IP VPN

Vous n'êtes pas identifié(e).

#1 2013-11-16 14:39:47

niawag
Membre
Inscription : 2013-03-22
Messages : 14

Exécuter un script quand la connexion échoue

Bonjour à tous,

Est-il possible de lancer automatiquement un script lorsque la connexion à un serveur échoue? Actuellement j'utilise la commande down qui me permet d'exécuter un script lorsque la connexion au serveur se termine mais ça ne marche que si la connexion était bien établie. Mon objectif est d'avoir une connexion "autonome" qui se relance si la connexion au serveur se termine (mon script tue le process et en relance un avec une connexion à un autre serveur). Cela marche très bien sauf dans le cas ou la connexion échoue. Savez-vous s'il y a une possibilité qui permette de lancer un script en cas d'échec de la connexion? Si ce n'est pas possible, avez-vous une autre idée? (J'ai écrit un script qui ping google régulièrement et qui tue et relance le vpn si le ping ne passe pas, comme je suis derrière un proxy ça marche mais ce n'est pas très élégant...)

D'avance merci pour votre aide, si vous êtes intéressés par les scripts dont je parle faites moi signe, je les partagerai avec plaisir!

Hors ligne

#2 2013-11-16 15:30:42

David
Bof !!!
Inscription : 2012-01-30
Messages : 6 132

Re : Exécuter un script quand la connexion échoue

client
dev tun

script-security 3
remote-random

# NL1
<connection>
  remote nl1.freedom-ip.com
  port 80
  proto tcp
</connection>

# NL2
<connection>
  remote nl2.freedom-ip.com
  port 443
  proto tcp
</connection>

# NL3
<connection>
  remote nl3.freedom-ip.com
  port 8080
  proto tcp
</connection>

resolv-retry infinite
ca ca.crt
tls-auth ta.key 1
auth-user-pass pass.txt
cipher AES-256-CBC
comp-lzo
verb 1
route-method exe
route-delay 2
nobind
ns-cert-type server

up up.bat
down down.bat
route-up is_ok.bat

Hors ligne

#3 2013-11-17 13:26:48

niawag
Membre
Inscription : 2013-03-22
Messages : 14

Re : Exécuter un script quand la connexion échoue

Bonjour et merci beaucoup pour cette réponse! Je n'avais pas pensé à l'utilisation de la table de routage pour vérifier si la connexion est fonctionnelle, je ferai des essais pour voir si ça me permet de faire ce que je souhaite.

Encore merci pour l'aide et bonne fin de weekend!

Hors ligne

#4 2013-11-19 16:10:52

niawag
Membre
Inscription : 2013-03-22
Messages : 14

Re : Exécuter un script quand la connexion échoue

Bonjour à nouveau, j'ai finalement trouvé une autre manière de résoudre mon problème, je la poste ici pour, peut-être, aider d'autres utilisateurs!

Le premier script est lancé quand la connexion VPN est UP ou DOWN :

VPN_up_down.bat

@echo off
set vpn=%config%
set vpn=%vpn:.ovpn=%
cd "C:\Program Files (x86)\OpenVPN\config\logs"

echo %date% %time:~0,8% - %vpn% %script_type% >> reco_log.txt
REM we try to reconnect only if the disconnection is not coming from the user to prevent unstoppable program
if "%signal%" == "sigterm" exit

setlocal ENABLEDELAYEDEXPANSION
if "%script_type%" == "down" (
  REM if vpn is down, we try with another server
  set /p vpnserver=<vpnserverlist.txt  
  more +1<vpnserverlist.txt>temp
  echo !vpnserver!>>temp
  move temp vpnserverlist.txt 
  taskkill /F /IM openvpn-gui.exe
  taskkill /F /IM openvpn.exe
  del "C:\Program Files (x86)\OpenVPN\log\*.log"
  start "" "C:\Program Files (x86)\OpenVPN\bin\openvpn-gui.exe" --connect !vpnserver! --silent_connection 1 --show_balloon 0
  echo %date% %time:~0,8% - reco !vpnserver! >> reco_log.txt
  REM and we check if it is connected
  cd "C:\Program Files (x86)\OpenVPN\config\scripts\"
  set vpn_UP=!vpnserver!
  set vpn_DOWN=%vpn%
  start /B "" "VPNCheckUP.bat"
  )

Et ce second script regarde dans le fichier de log pour voir si la connexion est OK, si ce n'est pas le cas il lance une connexion sur un autre serveur :
VPNCheckUP.bat

@echo off
set vpn=%vpn_UP%
set vpn=%vpn:.ovpn =%
ping -n 60 127.0.0.1>NUL
cd "C:\Program Files (x86)\OpenVPN\log"
copy %vpn%.log tmp.log
findstr "Initialization Sequence Completed" tmp.log
if %errorlevel%==0 (
  REM if the VPN connected we log it
  cd "C:\Program Files (x86)\OpenVPN\config\logs"
  echo %date% %time:~0,8% - %vpn% Running >> reco_log.txt
  exit
) else (
  REM else (VPN not connected) we run it with another server
  cd "C:\Program Files (x86)\OpenVPN\config\logs"
  echo %date% %time:~0,8% - %vpn% Not Running >> reco_log.txt
  setlocal ENABLEDELAYEDEXPANSION
  set /p vpnserver=<vpnserverlist.txt  
  more +1<vpnserverlist.txt>temp
  echo !vpnserver!>>temp
  move temp vpnserverlist.txt 
  taskkill /F /IM openvpn-gui.exe
  taskkill /F /IM openvpn.exe
  del "C:\Program Files (x86)\OpenVPN\log\*.log"
  start "" "C:\Program Files (x86)\OpenVPN\bin\openvpn-gui.exe" --connect !vpnserver! --silent_connection 1 --show_balloon 0
  echo %date% %time:~0,8% - reco !vpnserver! >> reco_log.txt
  REM And we check if it is connected
  cd "C:\Program Files (x86)\OpenVPN\config\scripts\"
  set vpn_UP=!vpnserver!
  set vpn_DOWN=%vpn%
  start /B "" "VPNCheckUP.bat" 
)

Le fichier vpnserverlist.txt contient une liste de fichier de connexion ovpn :
server1.ovpn
server2.ovpn
...

En espérant que ça aide d'autres personnes!

NB : je ne suis pas un pro du script, il y a surement des commandes inutiles ou non optimales, n'hésitez pas à proposer des modifs et/ou à adapter ce code à vos envies!

Hors ligne

Pied de page des forums