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. #21
    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
    J'ai renseigné les champs de la façon suivante :
    ftp server : 83.12.23.34
    login : tartempion
    mdp : youkulélé
    dossier distant : /openshare

    Résultat :
    Une erreur s'affiche ligne 102, l'instruction est sResults = fFTPResults.ReadAll
    Que je clique sur oui ou non (pour poursuivre l'exécution du script) aucun message ne s'affiche.

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

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 840
    Points : 9 225
    Points
    9 225
    Par défaut
    Citation Envoyé par simoncelli Voir le message
    J'ai renseigné les champs de la façon suivante :
    ftp server : 83.12.23.34
    login : tartempion
    mdp : youkulélé
    dossier distant : /openshare

    Résultat :
    Une erreur s'affiche ligne 102, l'instruction est sResults = fFTPResults.ReadAll
    Que je clique sur oui ou non (pour poursuivre l'exécution du script) aucun message ne s'affiche.
    Essayez le dossier distant : openshare sans le / et ça devrait marcher maintenant

  3. #23
    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
    ça ne fonctionne pas mieux

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

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 840
    Points : 9 225
    Points
    9 225
    Par défaut
    Je crois , alors que c'est un problème de droits d'écriture de fichier
    votre UAC est activé je présume, alors essayez de le désactiver et rebelote
    Edit :
    J'ai remarqué que vous écrivez c:/script/monip.txt alors qu'il faut écrire c:\script\monip.txt

  5. #25
    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
    Le coup du code qui marche impec chez les uns et pas chez les autres, à mon avis, c'est pas le code qui est en cause, mais peut-être l'environnement d'exécution du code. Ce soir (si j'ai le temps) je prends le taureau par les cornes, et je vais mettre cote-à-cote un win7 et un winxp, ça permettra déjà de lever un doute.

  6. #26
    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
    Je n'ai pas trop eu le temps de m'y pencher ce soir...
    Qu'est-ce qu'un UAC ?
    Est-ce qu'il existe une règle générale qui permet de savoir qu'il faut écrire c:\script\monip.txt plutôt que c:/script/monip.txt ?

  7. #27
    Expert éminent
    Avatar de hackoofr
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2009
    Messages
    3 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 840
    Points : 9 225
    Points
    9 225
    Par défaut

    Voici un tutoriel qui vous montre la procédure à suivre pour désactiver le UAC dans Windows 7
    Bonne Continuation

  8. #28
    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

    Voila, j'ai passé un peu de temps à chercher des solutions au problème. J'ai décidé de passer outre cette ligne de commande sResults = fFTPResults.ReadAll Il est parfois des mystères qu'il ne faut pas chercher à résoudre...

    Par contre, j'ai trouvé une solution inspiré de plusieurs sources, dont les vôtres et celles d'ici http://www.codescript.co.uk/ftp_connect_and_upload.htm

    Ça donne le code suivant :

    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
    Ip_Publique()
     
    Set oShell = CreateObject("Shell.Application")
    Set objFSO = CreateObject("Scripting.FileSystemObject")
     
    'Path to file or folder to upload
    path = "c:\script\monip.txt"
     
    FTPUpload(path)
    '************************************************************
    Sub Ip_Publique
        Dim Titre,URL,ie,objFSO,Data,OutPut,objRegex,Match,Matches
        Titre = "Adresse Ip Publique !"
        URL = "http://monip.org"
        Set ie = CreateObject("InternetExplorer.Application")
        Set objFSO = CreateObject("Scripting.FileSystemObject") 
        ie.Navigate (URL) 
        ie.Visible=false
        DO WHILE ie.busy
            wscript.sleep 100
        LOOP
        Data = ie.document.documentElement.innertext
        Set OutPut = objfso.OpenTextFile("c:\script\monip.txt",8,True)
        ie.Quit 
        Set ie = Nothing
        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)
        For Each Match in Matches   
            'MsgBox "Mon IP Publique est : " & vbCr & Match.Value ,64,Titre
            OutPut.WriteLine string(40,"-") & vbcr &"  Nous sommes le "& Now & vbcr & string(40,"-") & vbcr & "  Mon IP Publique est : "& Match.Value & vbcr & string(40,"*")
        Next
        'Call OpenLog("c:\script\monip.txt")
    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(path)
     
    On Error Resume Next
     
    'Copy Options: 16 = Yes to All
    Const copyType = 16
     
    'FTP Wait Time in ms
    waitTime = 80000
     
    FTPUser = "user"
    FTPPass = "pass"
    FTPHost = "host"
    FTPDir = "/dir/"
     
    strFTP = "ftp://" & FTPUser & ":" & FTPPass & "@" & FTPHost & FTPDir
    Set objFTP = oShell.NameSpace(strFTP)
     
    'Make new folder on FTP site
    'objFTP.NewFolder "FTP Backup"
     
     
    'Upload single file
    If objFSO.FileExists(path) Then
     
    Set objFile = objFSO.getFile(path)
    strParent = objFile.ParentFolder
    Set objFolder = oShell.NameSpace(strParent)
     
    Set objItem = objFolder.ParseName(objFile.Name)
     
    Wscript.Echo "Uploading file " & objItem.Name & " to " & strFTP
     
     Const OverwriteExisting = True
     objFTP.CopyHere objItem, true
     'copyType
     
     
    End If
     
    'Upload all files in folder
    If objFSO.FolderExists(path) Then
     
    'Code below can be used to upload entire folder
    Set objFolder = oShell.NameSpace(path)
     
    Wscript.Echo "Uploading folder " & path & " to " & strFTP
    objFTP.CopyHere objFolder.Items, copyType
     
    End If
     
     
    If Err.Number <> 0 Then
    Wscript.Echo "Error: " & Err.Description
    End If
     
    'Wait for upload
    WScript.Sleep waitTime
     
    End Sub
    Ça fonctionne très bien au détail qui tue près, le genre de truc simple, facile et évident sur lequel on s'arrache les cheveux ! Lors de la copie du fichier, windows me demande systématiquement une confirmation pour écraser le fichier existant (ligne 80 et quelques). Je ne parviens pas à passer outre cette demande de confirmation. Pourquoi ?

  9. #29
    Expert éminent
    Avatar de hackoofr
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2009
    Messages
    3 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 840
    Points : 9 225
    Points
    9 225
    Par défaut

    Jeter un coup d’œil ici , on sait jamais
    ' These are the available CopyHere options, according to MSDN
    ' (http://msdn2.microsoft.com/en-us/library/ms723207.aspx).
    ' On my test systems, however, the options were completely ignored.
    ' 4: Do not display a progress dialog box.
    ' 8: Give the file a new name in a move, copy, or rename
    ' operation if a file with the target name already exists.
    ' 16: Click "Yes to All" in any dialog box that is displayed.
    ' 64: Preserve undo information, if possible.
    ' 128: Perform the operation on files only if a wildcard file
    ' name (*.*) is specified.
    ' 256: Display a progress dialog box but do not show the file
    ' names.
    ' 512: Do not confirm the creation of a new directory if the
    ' operation requires one to be created.
    ' 1024: Do not display a user interface if an error occurs.
    ' 4096: Only operate in the local directory.
    ' Don't operate recursively into subdirectories.
    ' 8192: Do not copy connected files as a group.
    ' Only copy the specified files.
    intOptions = 256

  10. #30
    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
    Bien essayé mais non.

    J'ai essayé avec les autres valeurs entières, j'ai essayé en remplaçant 16 par 10, son équivalent hexadécimal, et d'autres valeurs, j'ai essayé aussi en explicitant le type de donnée avec les fonctions de conversion de type, sans résultat...

    3 hypothèses : soit il gère pas les flags de façon habituelle (il faudrait trouver un moyen de lui dire que c'est un flag), soit ces options ne sont valables qu'en local, à approfondir, soit c'est autre chose, mais je vois pas quoi...

  11. #31
    Membre émérite
    Inscrit en
    Avril 2010
    Messages
    1 495
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 1 495
    Points : 2 274
    Points
    2 274
    Par défaut
    Ben alors, c'est pas encore résolu

    edit:

    Je viens de voir dans ton dernier script que tu utilises l'explorateur pour écrire sur ton serveur FTP, mais je pense que pour faire ça il faut que ton serveur soit vu comme un dossier, sinon ça fonctionne pas, il doit y avoir une option à activer dans Internet Explorer genre options-> activer dossiers FTP un truc dans le genre, sinon tu peux utiliser le client léger natif ftp.exe...

    j'ai oublié... salut tout le monde

  12. #32
    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
    Merci pour ta contribution minnesota, mais le concept est de prendre ce fichier .vbs, et le le faire exécuter au démarrage du système (xp ou 7) en le mettant dans le menu démarrage. Ce fichier doit fonctionner sans installer d'outil particulier.

    L'idée de configurer IE pour que ça fonctionne correctement, c'est un peu moyen... Ajouter un logiciel supplémentaire tel que ftp.exe est encore plus moyen que moyen...

    Comment faire comprendre à cette stupidité d'ordinateur qu'il y a une option à la fin de objFTP.CopyHere objItem !?? Il se comporte comme si ce paramètre n'était pas renseigné, comme si c'était pas au bon format, comme s'il y avait une erreur qui n'est pas remonté et pour cause ! "This method does not return a value."


    ouais... ben on est pas dans la m3rde... !

  13. #33
    Membre émérite
    Inscrit en
    Avril 2010
    Messages
    1 495
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 1 495
    Points : 2 274
    Points
    2 274
    Par défaut
    Ftp.exe est déjà inclus dans le système...
    pour la configuration de IE c'est une hypothèse, vu la méthode employée dans le script, ça permettrait de lever le doute... il faudrait voir s'il n'existe pas un objet vbs FTP comme pour HTTP, ça fait longtemps que j'ai laissé tomber vbs...

    Sinon, rien n'empêche de faire un cmd et une combinaison vbs, ftp.exe... ça reste des commandes internes... même si c'est pas de toute beauté...

  14. #34
    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
    Je ne savais pas que ftp.exe était inclus dans winXP/7

    Il existe une liste des objets et méthodes supportés par ftp.exe ? Je débute en VBS et j'ai pas encore tout le vocabulaire, je ne sais même pas exactement comment spécifier au script de s'exécuter dans tel ou tel contexte...

    Bref, avant que vous me donniez des solutions tout cru, j'aimerais bien un peu d'aide pour savoir où je peux trouver les infos, histoire de potasser tout ça comme un grand

  15. #35
    Membre émérite
    Inscrit en
    Avril 2010
    Messages
    1 495
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 1 495
    Points : 2 274
    Points
    2 274
    Par défaut
    Sur ta ligne de commande, cmd.exe tu tapes "ftp -help" sinon sur le site de microsoft ici et ... tu dois aussi avoir un fichier chm (ntcmds.chm) dans le dossier help de windows...

  16. #36
    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 et merci pour les pistes que vous m'avez donné.

    Voici mon code, il fonctionne très bien
    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
    Ip_Publique()
     
     
     
    FTPUpload(path)
    '************************************************************
    Sub Ip_Publique
        Dim Titre,URL,ie,objFSO,Data,OutPut,objRegex,Match,Matches
        Titre = "Adresse Ip Publique !"
        URL = "http://monip.org"
        Set ie = CreateObject("InternetExplorer.Application")
        Set objFSO = CreateObject("Scripting.FileSystemObject") 
        ie.Navigate (URL) 
        ie.Visible=false
        DO WHILE ie.busy
            wscript.sleep 100
        LOOP
        Data = ie.document.documentElement.innertext
    	'C:\Users\Alice\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
    	Set OutPut = objfso.OpenTextFile("C:\Users\Alice\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\monip.txt",8,True)
        'Set OutPut = objfso.OpenTextFile("c:\script\monip.txt",8,True)
        ie.Quit 
        Set ie = Nothing
        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)
        For Each Match in Matches   
            'MsgBox "Mon IP Publique est : " & vbCr & Match.Value ,64,Titre
            OutPut.WriteLine string(40,"-") & vbcr &"  Nous sommes le "& Now & vbcr & string(40,"-") & vbcr & "  Mon IP Publique est : "& Match.Value & vbcr & string(40,"*")
        Next
        'Call OpenLog("c:\script\monip.txt")
    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(path)
     
    Dim FSO, File
    Set FSO = CreateObject("Scripting.FileSystemObject")
    'C:\Users\Alice\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
    Set File = FSO.OpenTextFile("C:\Users\Alice\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\commandes_ftp.txt", 2, True)
     
    With File
     .WriteLine "open 83.xxx.xxx.xxx"
     .WriteLine "USER"
     .WriteLine "mdp"
     .WriteLine "cd openshare"
     .WriteLine "PUT ""C:\Users\Alice\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\monip.txt"""
     .WriteLine "Pause"
     .WriteLine "Quit"
     .Close
    End With
     
    Dim shell
    Set shell = CreateObject("WScript.Shell")
    shell.Run "ftp -n -s: " & Chr$(34) & "C:\Users\Alice\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\commandes_ftp.txt" & Chr$(34),0
    'Wscript.echo "ftp -n -s: ""C:\Users\Alice\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\commandes_ftp.txt"""
    'Attendre que ftp.exe libère le fichier de commande
    Wscript.Sleep 10000
     
    FSO.DeleteFile "C:\Users\Alice\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\commandes_ftp.txt", true
    FSO.DeleteFile "C:\Users\Alice\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\monip.txt", true
     
    End Sub
    À un détail près : je voudrais remplacer le nom d'utilisateur par la variable locale pour ne pas avoir à retoucher le code quand on change de PC/utilisateur. Mais ça c'est la partie facile des modif'
    Le bazar fonctionne très bien lorsque le chemin d'accès est du type c:\script\..., le tout sans espace. Comme je veux que mon script s'exécute à l'ouverture de la sessions windows 7, je souhaite définir les chemins relatifs au dossier démarrage. Naturellement, crosoft ne sait pas faire les choses simplement, et pour amuser la galerie, un espace s'est incrusté entre Start et Menu Donc, ligne 67, je ne suis pas foutu de savoir exactement quelle commande est envoyée au shell, ça va trop vite et la fenêtre cmd se ferme aussitôt.

    Quelqu'un connait une astuce made in 'LE truc à savoir pour pas devenir fou' ?

    Après cet ènième fignolage je pourrais dire que le code est enfin 'fini' et pourra servir à d'autre. Merci

    Je n'ai pas précisé, mais j'ai essayé de doubler les quotes, les tripler, ...

  17. #37
    Membre émérite
    Inscrit en
    Avril 2010
    Messages
    1 495
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 1 495
    Points : 2 274
    Points
    2 274
    Par défaut
    pourquoi tu fais pas un simple Set File = FSO.OpenTextFile("commandes_ftp.txt", 2, True) étant donné que ton script est déjà dans le dossier Startup je présume, mais y'a un problème, en y copiant ton texte il peut être automatiquement ouvert avec l'éditeur de texte associé. Sinon en ligne 67 y'a peut être un espace de trop entre s: et ". Tu peux mettre un raccourci à la place dans le dossier startup.

    Edit:

    et +1 pour le retour

  18. #38
    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
    La syntaxe Set File = FSO.OpenTextFile utilise les chemins relatifs à l'emplacement d'exécution du fichier .VBS ou c'est du chemin absolu qu'il faut indiquer ?

  19. #39
    Membre émérite
    Inscrit en
    Avril 2010
    Messages
    1 495
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 1 495
    Points : 2 274
    Points
    2 274
    Par défaut
    Normalement les deux sont pris en charge

  20. #40
    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,

    J'ai mis le temps qu'il fallait, voila donc le code qui réponds à mon besoin. Je le rappel : au démarrage du système, je souhaite récupérer l'adresse IP publique de ma box, l'enregistrer dans un fichier texte, et le copier sur un serveur FTP distant.

    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
    '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()
     
    FTPUpload()
    '************************************************************
    Sub Ip_Publique
        Dim Titre,URL,ie,objFSO,Data,OutPut,objRegex,Match,Matches
        Titre = "Adresse Ip Publique de la livebox"
        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
    	Set OutPut = objfso.OpenTextFile("monip.txt",8,True)	'création du fichier texte
        ie.Quit 
        Set ie = Nothing
     
    	'??? 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)
        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 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 FSO, FileFTP, FileFTPName, shell
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set FileFTPName = CreateObject("Scripting.FileSystemObject")
    Set FileFTP = FSO.OpenTextFile("commandes_ftp.txt", 2, True)
     
     'création d'un fichier de commandes pour ftp.exe
    With FileFTP
     .WriteLine "open <FTP distant>"
     .WriteLine "USER <login>"
     .WriteLine "<mdp>"
     .WriteLine "cd <dossier distant>"
     .WriteLine "PUT ""C:\Users\Alice\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\monip.txt"""
     .WriteLine "Pause"
     .WriteLine "Quit"
     .Close
    End With
     
    Set shell = CreateObject("WScript.Shell")
     
    'exécution de ftp.exe avec la liste de commandes précédemment créé
    shell.Run "ftp -n -s:" & chr(34) & FSO.GetAbsolutePathName("commandes_ftp.txt") & chr(34), 0
    'Attendre que ftp.exe libère le fichier de commande
    Wscript.Sleep 10000
     
    'suppression des fichiers inutiles
    FSO.DeleteFile FSO.GetAbsolutePathName("commandes_ftp.txt")
    FSO.DeleteFile FSO.GetAbsolutePathName("monip.txt")
     
    End Sub
    Ce code peut être placé dans n'importe quel répertoire, à condition d'avoir les droits d'accès suffisant (merci win7)

    Le fichier texte ne comporte qu'une seule adresse, celle qui était en vigueur lors de la dernière exécution. Pour avoir l'historique de l'évolution de l'IP, il ne faut pas supprimer le fichier.

    J'ai essayé de commenter ce code en fonction de ce que je comprenais, merci de corriger/améliorer les commentaires.

    Ce code est « opensource ».

    N.B. : je n'ai pas testé ce code dans toutes les conditions (différents OS…)

    Merci pour votre contribution.

    [edit] Le 23 tout fonctionnait très bien. Le 25 « FSO.DeleteFile FSO.GetAbsolutePathName("commandes_ftp.txt") --- PERMISSION REFUSÉE ! »

    Je ne m'arracherais plus les cheveux.


    et pour finir

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

Discussions similaires

  1. Récupérer une adresse IP publique
    Par ptitmanuk dans le forum Applets
    Réponses: 6
    Dernier message: 20/04/2011, 00h13
  2. [MFC]récupérer l'adresse MAC
    Par julien20vt dans le forum MFC
    Réponses: 6
    Dernier message: 17/02/2004, 11h22
  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, 14h27
  4. Quest ce qu'une adresse reseau publique ?
    Par WOLO Laurent dans le forum Développement
    Réponses: 3
    Dernier message: 09/08/2003, 12h35
  5. Comment récupérer une adresse MAC ?
    Par psau dans le forum Développement
    Réponses: 7
    Dernier message: 19/07/2002, 17h26

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