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 :

Récupérer l'adresse IP publique de sa box


Sujet :

VBScript

  1. #41
    Membre à l'essai
    Inscrit en
    Mars 2013
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Mars 2013
    Messages : 29
    Points : 21
    Points
    21
    Par défaut
    Bonjour à tous,

    voici le code que j'ai obtenu après de nombreux essais :
    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
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    'Notes :
    'les chemins sont relatifs à l'emplacement d'exécution de ce code
    'ce code créé et supprime des fichiers
    'assurez-vous d'avoir les droits windows pour crééer/supprimer des fichiers
    'par exemple, sous Win7, ce code ne fonctionnera pas à la racine de C
    'dans mon application, ce code s'exécute au démarrage du système
    'de manière transparante, une alerte peut toutefois apparaître
    'si la connection internet est perdu ou si le firewall fait du zèle
    'il faudra peut-être améliorer le code pour libérer les ressources
    'comme par exemple Set ie = Nothing
     
    Option Explicit
     
    Ip_Publique()
    Ip_Publique()
    FTPUpload()
    '************************************************************
    Sub Ip_Publique
    '*********
    dim oShell
    dim iRet
    Set oShell = WScript.CreateObject("WScript.Shell")
    'iRet = oShell.Popup ("1 - récupération code source ",1,"popup",vbOKCancel+16)
    '*********
        Dim Titre,URL,ie,objFSO,Data,OutPut,objRegex,Match,Matches
        Titre = "Adresse Ip Publique !"
        URL = "http://monip.org"
        Set ie = CreateObject("InternetExplorer.Application")	'nous permet d'utiliser les fonctions d'IE
        Set objFSO = CreateObject("Scripting.FileSystemObject") 'nous permet d'utiliser les fonctions de l'OS
        ie.Navigate (URL) 
        ie.Visible=false
        DO WHILE ie.busy
            wscript.sleep 100
        LOOP
        Data = ie.document.documentElement.innertext			'récupération du code source de la page
    	'msgbox data
    'Wscript.Sleep 300000
    	'createafile()
    	'Set OutPut = objfso.GetFile("monip.txt")
    	Set OutPut = objfso.CreateTextFile("monip.txt",8,True)
    	'msgbox "fichier texte créé ? création"
     
     
     
        ie.Quit 
        Set ie = Nothing
    '*********
    'iRet = oShell.Popup ("2 - mise en forme ",1,"popup",vbOKCancel+16)
    '*********
    	'??? je suppose que c'est une recherche par expression régulière ???
        Set objRegex = new RegExp
        objRegex.Pattern = "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b"
        objRegex.Global = False
        objRegex.IgnoreCase = True
        Set Matches = objRegex.Execute(Data)
    '*********
    'iRet = oShell.Popup ("3 - création fichier txt ",1,"popup",vbOKCancel+16)
    '*********
        For Each Match in Matches
    		'écriture de l'adresse IP dans le fichier texte
            OutPut.WriteLine string(40,"-") & vbcr &"  Nous sommes le "& Now & vbcr & string(40,"-") & vbcr & "  Mon IP Publique est : "& Match.Value & vbcr & string(40,"*")
    	Next
     
    	'si on veut voir immédiatement le résultat du script
        'Call OpenLog("c:\script\monip.txt")
    End Sub
     Sub CreateAfile()
    	dim fs, a
        Set fs = CreateObject("Scripting.FileSystemObject")
        Set a = fs.CreateTextFile("monip.txt", True)
        a.WriteLine("This is a test.")
        a.Close
    	'msgbox "testfile created ?"
    End Sub
    Sub OpenLog(File)
        Dim ws
        Set ws = CreateObject("wscript.shell")
        ws.run "Notepad " & File,1,True
        Set ws = Nothing
    End Sub
     
    '-------------------------------FTPUpload---------------------------------------------
     
    Sub FTPUpload()
    'cette fonction s'appuie sur l'application FTP.EXE inclut avec windows
    'je ne suis pas entièrement satisfait de ce code, notamment FileFTPName…
    '*********
    dim oShell
    dim iRet
    Set oShell = WScript.CreateObject("WScript.Shell")
    'iRet = oShell.Popup ("4 - ftpupload ",1,"popup",vbOKCancel+16)
    '*********
    Dim FSO, FileFTP, FileBAT, FileFTPName, shell
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set FileFTPName = CreateObject("Scripting.FileSystemObject")
    Set FileFTP = FSO.OpenTextFile("commandes_ftp.txt", 2, True)
    Set FileBAT = FSO.OpenTextFile("commandes_ftp.bat", 2, True)
     
     'création d'un fichier de commandes pour ftp.exe
    '*********
    'iRet = oShell.Popup ("5 - création d'un fichier de commandes pour ftp.exe ",1,"popup",vbOKCancel+16)
    '*********
    With FileFTP
     .WriteLine "open **.***.***.**"
     .WriteLine "USER ****"
     .WriteLine "**********"
     .WriteLine "cd openshare"
     .WriteLine "PUT " & FSO.GetAbsolutePathName("monip.txt")
     .WriteLine "Quit"
     .Close
    End With
     
    With FileBAT
     .WriteLine "ftp -n -s:" & chr(34) & FSO.GetAbsolutePathName("commandes_ftp.txt") & chr(34)
     .WriteLine "Pause"
     .close
    End With
    '*********
    'iRet = oShell.Popup ("6 - exécution de ftp.exe ",1,"popup",vbOKCancel+16)
    '*********
    Set shell = CreateObject("WScript.Shell")
     
    'exécution de ftp.exe avec la liste de commandes précédemment créé
     
    shell.Run chr(34) & FSO.GetAbsolutePathName("commandes_ftp.bat") & chr(34)
     
    'msgbox "ftp -n -s:" & chr(34) & FSO.GetAbsolutePathName("commandes_ftp.txt") & chr(34) & " >>c:\script\log.txt"
    'shell.Run "ftp -d -n -s:" & chr(34) & FSO.GetAbsolutePathName("commandes_ftp.txt") & chr(34) & " >>c:\script\log.txt", 3, true
    'Attendre que ftp.exe libère le fichier de commande
    '*********
    'iRet = oShell.Popup ("7 - ftp.exe exécuté",1,"popup",vbOKCancel+16)
    '*********
    Wscript.Sleep 10000
    '*********
    'iRet = oShell.Popup ("8 - fin attente",1,"popup",vbOKCancel+16)
    '*********
     
    'suppression des fichiers inutiles
    FSO.DeleteFile FSO.GetAbsolutePathName("commandes_ftp.txt")
    FSO.DeleteFile FSO.GetAbsolutePathName("commandes_ftp.bat")
    FSO.DeleteFile FSO.GetAbsolutePathName("monip.txt")
    '*********
    'iRet = oShell.Popup ("9 - fin",1,"popup",vbOKCancel+16)
    '*********
     
    End Sub
    La ligne 40 me pose problème. Si je place le code dans le dossier démarrer, le fichier monip.txt n'est pas créé au démarrage de l'ordinateur. Si j'exécute le code manuellement tout fonctionne correctement. Je n'ai pas compris pourquoi, si vous avez une piste...

    Pour contourner le problème, j'ai déplacé mon code dans le dossier c:\script et j'ai mis dans le dossier démarrer un fichier .bat qui lance monip.vbs qui se trouve dans le dossier c:\script. L'idée est de faire exécuter le script dans le dossier c:\script, et que les fichiers y soient créés. En fait tous les fichiers sont créés dans le dossier d'exécution du .bat, c'est à dire dans le dossier de démarrage de l'ordinateur, y compris monip.txt.

    Et tout fonctionne correctement.

    Cela ne me plait que moyennement, mais tant pis, je vais faire avec. Toutes les suggestions sont les bienvenues

  2. #42
    Expert éminent
    Avatar de hackoofr
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2009
    Messages
    3 830
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 830
    Points : 9 200
    Points
    9 200
    Par défaut

    Ma proposition est de :
    1. Laisser votre script monip.vbs dans le dossier c:\script
    2. Créer un raccourci de ce script avec le bouton droit
    3. Copier ce Raccourci dans le Dossier Démarrage.
    4. Ajouter en début du script une boucle pour tester si on est connecté à internet ou non.
    5. Si oui, alors on continue l’exécution du script càd Ip_Publique et FTPUpload puis on quitte.
    6. Si Non, alors on attend en boucle jusqu'à la connexion à internet soit établie, et par la suite, on continue l’exécution du script.

  3. #43
    Membre à l'essai
    Inscrit en
    Mars 2013
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Mars 2013
    Messages : 29
    Points : 21
    Points
    21
    Par défaut [résolu]
    Il faudra un jour qu'on m'explique d'où me vient cette manie de chercher des solutions compliquées quand il y en a de toutes simples sous la main. Est-ce un syndrome répandu chez les développeurs ?

    1 2 et 3, ça marche très bien

    4 5 et 6, c'est la cerise sur le gâteau, le programme réponds à mes besoins, je ne sens pas l'utilité de développer ça.

    7 8 et 9, ah non, il n'y en a pas

    [mode feignasse ON] Par contre, je n'ai rien contre une solution toute prête qui tombe dans le bec [mode feignasse OFF]

    Merci, vous pouvez utiliser ce code comme bon vous semble.

  4. #44
    Expert éminent
    Avatar de hackoofr
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2009
    Messages
    3 830
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 830
    Points : 9 200
    Points
    9 200
    Par défaut

    Quelques Remarques:

    1. Au début de votre script il y a un double appel à la fonction Ip_Publique() pourquoi
    2. Vous voulez toujours afficher la console DOS lors de l'envoi du fichier monip.txt à votre serveur FTP ?


    Vous pouvez ajouter ce bout de code au début de script : c'est la boucle pour tester si on est connecté à internet ou non :
    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
    Dim Boucle,strComputer,MsgTitre,objPing,objStatus
    Boucle = True
    While Boucle = True
    	wscript.sleep 60000 ' on attend une bonne minute pour se connecter à internet
    	strComputer = "smtp.gmail.com"
    	MsgTitre = "TEST DE CONNEXION INTERNET ET SMTP DE GMAIL"
    	Set objPing = GetObject("winmgmts:{impersonationLevel=impersonate}!\\").ExecQuery("select * from Win32_PingStatus where address = '" & strComputer & "'")
    	For Each objStatus in objPing
    		If objStatus.Statuscode = 0 Then
    			msgbox "TEST SMTP DE GMAIL EST OK . VOUS ETES CONNECTE A INTERNET ET LE SMTP DE GMAIL EST DISPONIBLE ! " & objStatus.Statuscode,64,MsgTitre
    			Boucle = False
    			Call Ip_Publique()
    			Call FTPUpload()
    			wscript.quit
    		else
    			msgbox "TEST SMTP DE GMAIL EST NO OK . VOUS N'ETES PAS CONNECTE A INTERNET ET LE SMTP DE GMAIL N'EST PLUS DISPONIBLE EN CE MOMENT !" & objStatus.Statuscode,16,MsgTitre
    		End If
    	Next
    Wend

  5. #45
    Membre à l'essai
    Inscrit en
    Mars 2013
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Mars 2013
    Messages : 29
    Points : 21
    Points
    21
    Par défaut
    1 - Parce que le fichier monip.txt ne voulait pas se créer correctement, je me suis dit qu'en insistant je parviendrais à le convaincre, sans succès, je pense que le double appel peut être supprimé.

    2 - Pour l'instant, oui, quand le temps me montrera une certaine fiabilité, et quand j'en aurais marre, je le masquerais. C'est pas ce qu'il y a de plus difficile (à priori)

    Merci pour la boucle

+ Répondre à la discussion
Cette discussion est résolue.
Page 3 sur 3 PremièrePremière 123

Discussions similaires

  1. Récupérer une adresse IP publique
    Par ptitmanuk dans le forum Applets
    Réponses: 6
    Dernier message: 20/04/2011, 01h13
  2. [MFC]récupérer l'adresse MAC
    Par julien20vt dans le forum MFC
    Réponses: 6
    Dernier message: 17/02/2004, 12h22
  3. Comment récupérer les adresses WWW dans Internet Explorer ?
    Par chaours dans le forum Web & réseau
    Réponses: 7
    Dernier message: 03/09/2003, 15h27
  4. Quest ce qu'une adresse reseau publique ?
    Par WOLO Laurent dans le forum Développement
    Réponses: 3
    Dernier message: 09/08/2003, 13h35
  5. Comment récupérer une adresse MAC ?
    Par psau dans le forum Développement
    Réponses: 7
    Dernier message: 19/07/2002, 18h26

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