IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBScript Discussion :

Connexion VPN automatique + IP Publique différente


Sujet :

VBScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 2
    Par défaut Connexion VPN automatique + IP Publique différente
    Bonjour à tous,

    Je suis actuellement dans le cadre d'un déploiement d'une solution VPN pour mes clients, dans l'optique d'automatiser des connexions en VPN sstp uniquement en dehors du réseau local ou est installé le serveur VPN à l'aide du planificateur de tâche et de scripts Vbs. (+ création de lecteur réseau notament, etc) Mon intention est que la connexion VPN s'effectue dès que l'adresse IP publique du serveur VPN est différente de celle ou les clients se connecteront à l'extérieur.

    J'ai pu trouver sur Internet un script qui pourrait répondre à ma demande (le script est ici: http://www.toobusiness.com/portail/c...reseau-vpn.htm) mais n'a pas l'air de fonctionner en interne quand on renseigne dans la constante IpHome l'adresse publique du VPN. j'ai un peu modifié le script disponbile en ajoutant un simple if <> entre la constante URL et IpHome. Mais ça n'a pas l'air de fonctionner, la connexion VPN s'effectue à chaque fois...

    Voici mon code modifié:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    Dim OWS, objIE, strIETitle, objShell, i, DelaiVPN, btn
     
    ' define objects
    Set OWS = CreateObject("Wscript.Shell")
    Set objShell = CreateObject("WScript.Shell")
    i=0
    ' les constantes
    const URL = "http://www.showmyip.com/xml/" 'IP externe
    const IpHome = "x.x.x.x" 'IP VPN
    const NomVPN = "Connexion VPN"
    const Login= "login" 'login AD
    const Password= "password" 'pw AD
    DelaiVPN= 50 'attente de réponse du serveur VPN (en secondes)
     
    ' on determine l'adresse IP
     
    monip(URL)
     
    'connexion ou déconnexion au vpn
     
    if monip(URL) <> IpHome Then
     
     
    		' On lance la connexion VPN
    		OWS.Run "%comspec% /c rasdial """ & NomVPN & """ " & Login &" " & Password, 0
    		' cancel arrêt de la tâche planifiée (pour la session en cours).
    		else
    		OWS.Run "%comspec% /c schtasks /change /disable /TN ""connexionvpnauto""", 0
    		WScript.Quit
    end if
     
    	Do while StrComp(myip,IpHome,1)=-1 
    		i=i+1
    		Wscript.sleep 1000
    		if i=DelaiVPN then 
    			'msgbox "VPN inaccessible. Vérifiez les paramètres de connexion au VPN ou les capacités de la connexion."
    			WScript.Quit
    		end if
    		'on vérifie à nouveau l'ip
    		monip(URL)
    	loop
     
    	OWS.Popup "vous êtes bien connecté à " & NomVPN, 10, "attention", 0 + 4096 
     
     
    function monip(URL)
     
    	set xmldoc = CreateObject("Microsoft.XMLDOM") 
    	xmlDoc.validateOnParse = True
    	xmldoc.async=false
    	xmldoc.load(URL)	
    	Select Case xmlDoc.parseError.errorCode
    	Case 0 ' le document xml est valide
    		for each x in xmldoc.documentElement.childNodes
    				if x.NodeName = "ip" then
    				myip = x.text
    				end if
    		next
    	Case Else 'le document xml n'est pas valide (adresse non accessible, vpn en cours de connexion ou pas d'accès web.)
    		Wscript.Sleep 5000
    		End Select
    end function
    Quelqu'un aurait une idée de ce que je devrais changer dans le code ?

    Merci d'avance

    ps: l'adresse de connexion VPN est le FQDN du serveur VPN et non l'adresse IP publique (obligatoire avec une connexion SSTP) est-ce que pourrait avoir une quelconque incidence ?

  2. #2
    Rédacteur
    Avatar de omen999
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 302
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 302
    Par défaut
    bonjour,
    ligne 56, copié/collé mal francisé
    prévoir en cas de doc xml non valide de renvoyer expressément une chaine vide
    le test de la ligne 21 devra donc être un peu plus précis
    de plus la ligne 17 est inutile
    nomen omen, nemo non omen - Consultez la FAQ VBScript et les cours et tutoriels VBScript
    le plus terrible lorsqu'une voiture renverse un piéton, c'est que ce sont les freins qui hurlent. (ramón)
    pas de questions techniques par mp

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 2
    Par défaut
    le myip ça reprend pas fonction Strcomp ? Je suis vraiment nul en programmation

    Sinon j'ai allegé le code et supprimer la fonction (qui allège rien du tout) sans les msgbox et bouton et ça a l'air de marcher !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    Dim OWS, objIE, strIETitle, objShell
     
    ' define objects
    Set OWS = CreateObject("Wscript.Shell")
    Set objShell = CreateObject("WScript.Shell")
    ' les constantes
    const URL = "http://www.showmyip.com/xml/" 'IP externe
    const IpHome = "x.x.x.x" 'IP VPN 
    const NomVPN = "Connexion VPN"
    const Login= "login"
    const Password= "password"
     
     
    ' on determine l'adresse IP
     
    Set xmlDoc=CreateObject("Microsoft.XMLDOM")
    xmlDoc.async="false" ' permet de charger entièrement le document en mémoire avant le traitement
    xmlDoc.load(URL)
     
    ' Lister les valeurs par nom de balise
        Set oElement = xmlDoc.documentElement
     
        If Not oElement Is Nothing Then
            For Each x In oElement.getElementsByTagName("ip")
                  monipext=x.Text
                 'MsgBox monipext
     
            Next
        End If
     
    'connexion ou déconnexion au vpn
     
     
    if monipext <> IpHome Then
     
     
    		' On lance la connexion VPN
    		OWS.Run "%comspec% /c rasdial """ & NomVPN & """ " & Login &" " & Password, 0
                    else
    		WScript.Quit
    end if
    J'ai d’ailleurs repris un bout de script dans la Faq du site en enlevant le "xmldoc.documentElement.childNodes" de l'ancien que j'avais pas trop compris....

  4. #4
    Rédacteur
    Avatar de omen999
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 302
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 302
    Par défaut
    le myip ça reprend pas fonction Strcomp ?

    la ligne 32 de ton 1er exemple devait également être maj
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	Do while StrComp(monip,IpHome,1)=-1
    et ça a l'air de marcher !
    alors c'est super...
    nomen omen, nemo non omen - Consultez la FAQ VBScript et les cours et tutoriels VBScript
    le plus terrible lorsqu'une voiture renverse un piéton, c'est que ce sont les freins qui hurlent. (ramón)
    pas de questions techniques par mp

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 04/11/2009, 22h49
  2. Réponses: 3
    Dernier message: 21/01/2008, 15h56
  3. [PHP-JS] Une connexion VPN?
    Par Bomba dans le forum Langage
    Réponses: 1
    Dernier message: 12/09/2006, 11h00
  4. Activer une connexion VPN automatiquement
    Par pleasant dans le forum Sécurité
    Réponses: 1
    Dernier message: 23/06/2006, 12h42
  5. Réponses: 2
    Dernier message: 02/12/2005, 04h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo