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. #1
    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écupérer l'adresse IP publique de sa box
    Bonjour à tous,

    Voici l'architecture que j'ai mis en place :
    <win7> - <livebox> - <internet> - <freebox> - <serveur FTP embarqué sur un NAS>

    Je souhaite écrire un script (.vbs) qui s'exécute sur win7 et qui va récupérer l'adresse IP publique de la livebox (c-à-d l'IP vu depuis internet) puis écrire cette adresse dans un fichier qui se trouve sur le serveur FTP.

    L'adresse IP de la freebox est connue et fixe, celle de la livebox est dynamique avec un bail de 7 jours.

    l’algorithme plus en détail :
    1 se connecter sur la page d'accueil de la livebox
    2 renseigner les login et mdp
    3 naviguer dans l'onglet configuration puis information système puis ADSL
    4 récupérer l'adresse IP correspondant à la ligne Adresse IP WAN
    5 se connecter à un serveur FTP dont l'adresse IP, le login et le mdp sont connus et fixe
    6 mettre à jour un fichier texte avec l'adresse IP récupéré en 4.

    Voici l'embryon de code inspiré d'ici http://vb.developpez.com/faqvbs/?page=II.3#vbsIE
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    'on error resume next
    Dim IE
    Set IE = Wscript.CreateObject("InternetExplorer.Application")
    IE.Visible = 1 
    IE.navigate "livebox"
    Do While (IE.Busy)
        WScript.Sleep 10
    Loop
    Set Helem = IE.document.getElementById("document.formu.authlogin.focus")
    Helem.Value = "admin"
    Set Helem = IE.document.getElementById("document.formu.authpasswd")
    Helem.Value = "admin"
    Set Helem = IE.document.Forms(0)
    Helem.Submit
    Sans on error resume next, l'exécution me renvoie une erreur ligne 10, objet requis Helem
    avec, le navigateur web me renvoie une erreur d'authentification.

    La page sur laquelle j'ai besoin de récupérer l'info est http://livebox/index.cgi?page=infosy...HGHQ2eqtsxC3io et sessionid prends une valeur aléatoire. Le code source montre que la référence "adresse ip wan" n'apparait qu'une seule fois.

    Dès que mon code est au point, je partage, je ne dois pas être le seul à être embêté par l'IP dynamique de la livebox...

    J'ai besoin de votre aide pour me mettre le pied à l'étrier, s'il vous manque des infos n'hésitez pas à me demander. En attendant vos réponses, je poursuis mes investigations.

    Merci d'avance.

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

    Informations forums :
    Inscription : Février 2006
    Messages : 1 299
    Points : 3 554
    Points
    3 554
    Par défaut
    bonjour,
    il faudrait connaitre le source complet de la page de config de la livebox puisqu'il semble que ces bras cassés
    ont viré l'accès telnet en même temps, je ne suis pas client orange
    et sinon, il reste la technique d'interrogation d'un site spécialisé dans l'identification du WAN client
    un exemple dans les contribs (le 1er msg) : http://www.developpez.net/forums/d12...e-ip-publique/
    et puis ça fera plaisir à hackoofr

  3. #3
    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 progressé. Le problème venait de document.formu.authlogin.focus, à remplacer par ("authlogin"). Même buisness pour le password

    Pourquoi faire simple quand on peut faire compliqué ? J'ai qu'à interroger http://www.monip.org/ au moins j'aurais fait un peu d'exercice

    Je vais continuer d'éplucher la FAQ pour savoir comment récupérer l'IP de ce code source :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    <title>MonIP.org v1.0</title>
    <META http-equiv="Content-type" content="text/html; charset=ISO-8859-1">
    </head>
    <P ALIGN="center"><FONT size=8><BR>IP : 90.30.242.107<br></font><font size=3><i>AToulouse-754-1-31-107.w90-30.abo.wanadoo.fr</i><br></font><font size=1><br><br>Pas de proxy détecté - No Proxy detected</font></html>
    Est-il possible de récupérer l'ensemble du code source d'une page web dans une variable ?

  4. #4
    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

    • 5 se connecter à un serveur FTP dont l'adresse IP, le login et le mdp sont connus et fixe
    • 6 mettre à jour un fichier texte avec l'adresse IP récupéré en 4.
    Il vous reste alors, que ces étapes : 5 et 6

  5. #5
    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
    Exact, et je n'ai pas la moindre idée de la manière de procéder. Je n'ai rien vu concernant le FTP dans la FAQ. En gros, j'ai besoin d'une instruction pour ouvrir la connexion, une pour vérifier que le fichier texte existe, le créer le cas échéant, et une autre pour faire la mise à jour du fichier.

    Et en bonus : une instruction pour refermer la connexion proprement

    Comment faire ?

  6. #6
    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
    Est-il possible de récupérer l'ensemble du code source d'une page web dans une variable ?
    Un exemple pour vous faire plaisir
    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
    URL = InputBox("Entrez l'URL pour y extraire son Code Source HTML "&vbCr&vbcr&_
    "Exemple ""http://www.google.fr""","Extraction du Code Source"," http://www.monip.org")
    If URL = "" Then WScript.Quit 
    Titre = "Extraction du Code Source de " & URL
    Set ie = CreateObject("InternetExplorer.Application")
    Set objFSO = CreateObject("Scripting.FileSystemObject") 
    ie.Navigate(URL) 
    ie.Visible=false
    DO WHILE ie.busy
    LOOP
    DataHTML = ie.document.documentElement.innerHTML
    DataText = ie.document.documentElement.innerText
    strFileHTML = "CodeSourceHTML.txt"
    Set objHTMLFile = objFSO.OpenTextFile(strFileHTML,2,True)
    objHTMLFile.WriteLine(String(120,"*") &vbcr& Titre&" au format Texte "&vbcr&String(120,"*"))
    objHTMLFile.WriteLine(DataText &vbcr& String(120,"*"))
    objHTMLFile.WriteLine(Titre&" au format HTML "&vbcr&String(120,"*"))
    objHTMLFile.WriteLine(DataHTML)
    objHTMLFile.Close
    ie.Quit 
    Set ie=Nothing
     Ouvrir(strFileHTML)
    wscript.Quit
     
    Function Ouvrir(File)
        Set ws=CreateObject("wscript.shell")
        ws.run "Notepad.exe "& File,1,False
    end Function

  7. #7
    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
    Pour la partie FTP, il suffit de rechercher dans le forum Vbscript et vous tombiez sûrement sur cette fonction :
    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
    Function FTPUpload(sSite, sUsername, sPassword, sLocalFile, sRemotePath)
      'This script is provided under the Creative Commons license located
      'at http://creativecommons.org/licenses/by-nc/2.5/ . It may not
      'be used for commercial purposes with out the expressed written consent
      'of NateRice.com
     
      Const OpenAsDefault = -2
      Const FailIfNotExist = 0
      Const ForReading = 1
      Const ForWriting = 2
     
      Set oFTPScriptFSO = CreateObject("Scripting.FileSystemObject")
      Set oFTPScriptShell = CreateObject("WScript.Shell")
     
      sRemotePath = Trim(sRemotePath)
      sLocalFile = Trim(sLocalFile)
     
      '----------Path Checks---------
      'Here we willcheck the path, if it contains
      'spaces then we need to add quotes to ensure
      'it parses correctly.
      If InStr(sRemotePath, " ") > 0 Then
        If Left(sRemotePath, 1) <> """" And Right(sRemotePath, 1) <> """" Then
          sRemotePath = """" & sRemotePath & """"
        End If
      End If
     
      If InStr(sLocalFile, " ") > 0 Then
        If Left(sLocalFile, 1) <> """" And Right(sLocalFile, 1) <> """" Then
          sLocalFile = """" & sLocalFile & """"
        End If
      End If
     
      'Check to ensure that a remote path was
      'passed. If it's blank then pass a "\"
      If Len(sRemotePath) = 0 Then
        'Please note that no premptive checking of the
        'remote path is done. If it does not exist for some
        'reason. Unexpected results may occur.
        sRemotePath = "\"
      End If
     
      'Check the local path and file to ensure
      'that either the a file that exists was
      'passed or a wildcard was passed.
      If InStr(sLocalFile, "*") Then
        If InStr(sLocalFile, " ") Then
          FTPUpload = "Error: Wildcard uploads do not work if the path contains a " & _
          "space." & vbCRLF
          FTPUpload = FTPUpload & "This is a limitation of the Microsoft FTP client."
          Exit Function
        End If
      ElseIf Len(sLocalFile) = 0 Or Not oFTPScriptFSO.FileExists(sLocalFile) Then
        'nothing to upload
        FTPUpload = "Error: File Not Found."
        Exit Function
      End If
      '--------END Path Checks---------
     
      'build input file for ftp command
      sFTPScript = sFTPScript & "USER " & sUsername & vbCRLF
      sFTPScript = sFTPScript & sPassword & vbCRLF
      sFTPScript = sFTPScript & "cd " & sRemotePath & vbCRLF
      sFTPScript = sFTPScript & "binary" & vbCRLF
      sFTPScript = sFTPScript & "prompt n" & vbCRLF
      sFTPScript = sFTPScript & "put " & sLocalFile & vbCRLF
      sFTPScript = sFTPScript & "quit" & vbCRLF & "quit" & vbCRLF & "quit" & vbCRLF
     
     
      sFTPTemp = oFTPScriptShell.ExpandEnvironmentStrings("%TEMP%")
      sFTPTempFile = sFTPTemp & "\" & oFTPScriptFSO.GetTempName
      sFTPResults = sFTPTemp & "\" & oFTPScriptFSO.GetTempName
     
      'Write the input file for the ftp command
      'to a temporary file.
      Set fFTPScript = oFTPScriptFSO.CreateTextFile(sFTPTempFile, True)
      fFTPScript.WriteLine(sFTPScript)
      fFTPScript.Close
      Set fFTPScript = Nothing
     
      oFTPScriptShell.Run "%comspec% /c FTP -n -s:" & sFTPTempFile & " " & sSite & _
      " > " & sFTPResults, 0, TRUE
     
      Wscript.Sleep 1000
     
      'Check results of transfer.
      Set fFTPResults = oFTPScriptFSO.OpenTextFile(sFTPResults, ForReading, _
      FailIfNotExist, OpenAsDefault)
      sResults = fFTPResults.ReadAll
      fFTPResults.Close
     
      oFTPScriptFSO.DeleteFile(sFTPTempFile)
      oFTPScriptFSO.DeleteFile (sFTPResults)
     
      If InStr(sResults, "226 Transfer complete.") > 0 Then
        FTPUpload = True
      ElseIf InStr(sResults, "File not found") > 0 Then
        FTPUpload = "Error: File Not Found"
      ElseIf InStr(sResults, "cannot log in.") > 0 Then
        FTPUpload = "Error: Login Failed."
      Else
        FTPUpload = "Error: Unknown."
      End If
     
      Set oFTPScriptFSO = Nothing
      Set oFTPScriptShell = Nothing
    End Function

  8. #8
    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 hackoofr pour ton aide, mais à présent je trébuche sur un truc tout bête.

    Sous windows7, je n'arrive pas à monter mon emplacement FTP avec une lettre de lecteur d'unité, donc il apparaît dans le poste de travail sous la rubrique "emplacement réseau". Comment fait-on pour 1 indiquer un chemin absolu dans vbscript (par défaut il me semble que c'est chemin relatif) et 2 pour accéder à des dossiers en se passant de la lettre de lecteur d'unité ?

    edit : oups j'avais pas vu ta réponse, j'étudie ça

  9. #9
    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
    un exemple qui utilise la fonction FTPUpload mais en HTA File2Upload.hta
    donc vous pouvez essayer si votre serveur FTP marche ou pas en recevant bien sûr une réponse de ce dernier positive ou négative
    un Aperçu :



  10. #10
    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 IP Publique + FTP Upload.vbs

    Voila je vous propose cette solution, qui marche 5/5 chez moi
    Donc c'est à vous de le modifier suivant vos besoins et vos paramètres de connexion FTP
    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
    Ip_Publique()
    'Ici Juste vous modifiez les paramètres de votre connexion FTP
    FTPUpload "ftp.serveur.com ou bien son IP","Votre Login","Votre mot de passe","c:\monip.txt","/",sResults
     
    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:\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:\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---------------------------------------------
    Function FTPUpload(sSite, sUsername, sPassword, sLocalFile, sRemotePath ,sResults)
        Const OpenAsDefault = -2
        Const FailIfNotExist = 0
        Const ForReading = 1
        Const ForWriting = 2
        Set oFTPScriptFSO = CreateObject("Scripting.FileSystemObject")
        Set oFTPScriptShell = CreateObject("WScript.Shell")
     
        sRemotePath = Trim(sRemotePath)
        sLocalFile = Trim(sLocalFile)
     
    'Vérifier si le chemin, contient des espaces.il faut ajouter des guillemets pour s'assurer qu'il passe correctement.
        If InStr(sRemotePath, " ") > 0 Then
            If Left(sRemotePath, 1) <> """" And Right(sRemotePath, 1) <> """" Then
                sRemotePath = qq(sRemotePath) 
            End If
        End If
     
        If InStr(sLocalFile, " ") > 0 Then
            If Left(sLocalFile, 1) <> """" And Right(sLocalFile, 1) <> """" Then
                sLocalFile = qq(sLocalFile) 
            End If
        End If
     
    'Assurer que la variable sRemotePath , Si elle est vide, on va la passer par un "\"
        If Len(sRemotePath) = 0 Then
            sRemotePath = "\"
        End If
     
    'construire un fichier de configuration pour passer les commandes ftp
        sFTPScript = sFTPScript & "USER " & sUsername & vbCRLF
        sFTPScript = sFTPScript & sPassword & vbCRLF
        sFTPScript = sFTPScript & "cd " & sRemotePath & vbCRLF
        sFTPScript = sFTPScript & "binary" & vbCRLF
        sFTPScript = sFTPScript & "prompt n" & vbCRLF
        sFTPScript = sFTPScript & "put " & sLocalFile & vbCRLF
        sFTPScript = sFTPScript & "quit" & vbCRLF & "quit" & vbCRLF & "quit" & vbCRLF
     
     
        sFTPTemp = oFTPScriptShell.ExpandEnvironmentStrings("%TEMP%")
        sFTPTempFile = sFTPTemp & "\" & oFTPScriptFSO.GetTempName
        sFTPResults = sFTPTemp & "\" & oFTPScriptFSO.GetTempName
     
    'Ecrire les commandes ftp à passer dans un fichier temporaire.
        Set fFTPScript = oFTPScriptFSO.CreateTextFile(sFTPTempFile, True)
        fFTPScript.WriteLine(sFTPScript)
        fFTPScript.Close
        Set fFTPScript = Nothing 
     
        oFTPScriptShell.Run "%comspec% /c FTP -i -n -s:" & sFTPTempFile & " " & sSite & _
        " > " & sFTPResults,0,True
     
    'Lire le Resultat du Transfert
        Set fFTPResults = oFTPScriptFSO.OpenTextFile(sFTPResults, ForReading, _
        FailIfNotExist, OpenAsDefault)
        sResults = fFTPResults.ReadAll
        fFTPResults.Close
     
        If InStr(sResults, "226") > 0 Then
            FTPUpload = True    
            Set objRegex = new RegExp
            objRegex.Pattern = "226(.\w+.*)"
            objRegex.Global = True
            objRegex.IgnoreCase = True
            Set Matches = objRegex.Execute(sResults)
            For Each Match in Matches   
                Result=objRegex.Replace(Match.Value,"$1")
                MsgBox " Le Fichier ""c:\monip.txt"" a été uploadé avec succés !"& vbcr & Result,64,"Résultat du Transfert d'Upload !"
            Next
        ElseIf InStr(sResults, "File Not Found") > 0 Then
            MsgBox "Erreur : Fichier Non Trouvé ?",16,"Erreur : Fichier Non Trouvé ?"
            FTPUpload = "Erreur : Fichier Non Trouvé ?"
        ElseIf InStr(sResults, "Login authentication failed") > 0 Then
            MsgBox "Login authentication a echoué !",16,"Login authentication failed !"
            FTPUpload = "Error: Login Failed."
        Else
            FTPUpload = "Error: Unknown."
            MsgBox "Erreur: Inconnu ?",16,"Erreur: Inconnu ?"
        End If
     
        oFTPScriptFSO.DeleteFile(sFTPTempFile)
        oFTPScriptFSO.DeleteFile (sFTPResults)
        Set oFTPScriptFSO = Nothing
        Set oFTPScriptShell = Nothing
    End Function
     
    'Fonction Pour Ajouter "les doubles quotes dans une variable" 
    Function qq(strIn) 
        qq = Chr(34) & strIn & Chr(34)
    End Function

  11. #11
    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


    Bon, abusons des smileys rigolos

    Premier truc marrant, quand je prends le bloc note par la main pour aller ouvrir un fichier ftp à l'adresse suivante : ftp://83.x.xx.xxx/openshare/test.txt ça marche , mais quand j'exécute ce bout de code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Function Ouvrir(File)
        Set ws=CreateObject("wscript.shell")
        ws.run "Notepad.exe "& File,1,False
    end Function
    avec file = ftp://83.x.xx.xxx/openshare/test.txt j'obtiens l'erreur suivante : la syntaxe du nom de fichier, de répertoire ou de volume est incorrecte alors qu'avec c:/script/codesourcehtml.txt ça marche très bien

    Avez-vous une explication ?

    Le deuxième truc rigolo c'est que j'ai une erreur qui revient de façon récurrente avec la ligne sResults = fFTPResults.ReadAll : l'entrée dépasse la fin du fichier... Du coup, même la solution qui marche 5/5 chez hackoofr ne marche pas du tout chez moi, j'ai juste l'impression que mon pc se moque de moi

    Quand tout fonctionne correctement (c'est une notion très relative ) c'est que toutes les erreurs ont planté

  12. #12
    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
    Avez-vous tester avec l'outil graphique au-dessus que j'ai posté avant et ça donne quoi comme réponse du serveur FTP

  13. #13
    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 donne erreur ligne 102 : l'entrée dépasse la fin du fichier. Voulez-vous continuer blabla ? Que ce soit oui ou non, il n'y a pas de réponse de la part du serveur. L'adresse du serveur FTP doit bien être de la forme ftp://83.xxx.xx.x ?

    Merci pour ton aide acharné

  14. #14
    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
    Bon, je sais que vous êtes en ce moment même énervé parce que le script ne marche pas chez toi.
    Donc suivez bien les instructions pas à pas sans les "brûler"
    donc on se calme un peu en buvant une tasse de thé chaude ou bien un verre de lait , puis tu vas tester ceci FTP Explorer

  15. #15
    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
    FTP Explorer fonctionne très bien

  16. #16
    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
    Donc maintenant quand tu lances le 1er script qui fait erreur vérifier bien dans ton disque dur si le fichier c:\monip.txt a été crée et qu'il n'est pas vide, car l'erreur vient que ce dernier est crée mais il est vide

  17. #17
    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 modifié l'emplacement du fichier par c:/script/monip.txt car windows7 refuse qu'on écrive "sauvagement" à la racine du disque C.
    J'ai oublié de dire que le fichier est créé correctement et qu'il n'est pas vide.

    Ensuite on retrouve de nouveau notre erreur ligne 95 sResults = fFTPResults.ReadAll

  18. #18
    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
    Testez-moi ceci :
    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
    Ip_Publique()
    '************************************************************
    'Ici Juste vous modifiez juste les trois premiers paramètres de votre connexion FTP
    FTPUpload "83.xxx.xxx.xxx","Votre Login","Votre mot de passe","c:\script\monip.txt","/",sResults
    '************************************************************
    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---------------------------------------------
    Function FTPUpload(sSite, sUsername, sPassword, sLocalFile, sRemotePath ,sResults)
        Const OpenAsDefault = -2
        Const FailIfNotExist = 0
        Const ForReading = 1
        Const ForWriting = 2
        Set oFTPScriptFSO = CreateObject("Scripting.FileSystemObject")
        Set oFTPScriptShell = CreateObject("WScript.Shell")
     
        sRemotePath = Trim(sRemotePath)
        sLocalFile = Trim(sLocalFile)
     
    'Vérifier si le chemin, contient des espaces.il faut ajouter des guillemets pour s'assurer qu'il passe correctement.
        If InStr(sRemotePath, " ") > 0 Then
            If Left(sRemotePath, 1) <> """" And Right(sRemotePath, 1) <> """" Then
                sRemotePath = qq(sRemotePath) 
            End If
        End If
     
        If InStr(sLocalFile, " ") > 0 Then
            If Left(sLocalFile, 1) <> """" And Right(sLocalFile, 1) <> """" Then
                sLocalFile = qq(sLocalFile) 
            End If
        End If
     
    'Assurer que la variable sRemotePath , Si elle est vide, on va la passer par un "\"
        If Len(sRemotePath) = 0 Then
            sRemotePath = "\"
        End If
     
    'construire un fichier de configuration pour passer les commandes ftp
        sFTPScript = sFTPScript & "USER " & sUsername & vbCRLF
        sFTPScript = sFTPScript & sPassword & vbCRLF
        sFTPScript = sFTPScript & "cd " & sRemotePath & vbCRLF
        sFTPScript = sFTPScript & "binary" & vbCRLF
        sFTPScript = sFTPScript & "prompt n" & vbCRLF
        sFTPScript = sFTPScript & "put " & sLocalFile & vbCRLF
        sFTPScript = sFTPScript & "quit" & vbCRLF & "quit" & vbCRLF & "quit" & vbCRLF
     
     
        sFTPTemp = oFTPScriptShell.ExpandEnvironmentStrings("%TEMP%")
        sFTPTempFile = sFTPTemp & "\" & oFTPScriptFSO.GetTempName
        sFTPResults = sFTPTemp & "\" & oFTPScriptFSO.GetTempName
     
    'Ecrire les commandes ftp à passer dans un fichier temporaire.
        Set fFTPScript = oFTPScriptFSO.CreateTextFile(sFTPTempFile, True)
        fFTPScript.WriteLine(sFTPScript)
        fFTPScript.Close
        Set fFTPScript = Nothing 
     
        oFTPScriptShell.Run "%comspec% /c FTP -i -n -s:" & sFTPTempFile & " " & sSite & _
        " > " & sFTPResults,0,True
     
    'Lire le Resultat du Transfert
        Set fFTPResults = oFTPScriptFSO.OpenTextFile(sFTPResults, ForReading, _
        FailIfNotExist, OpenAsDefault)
        sResults = fFTPResults.ReadAll
        fFTPResults.Close
     
        If InStr(sResults, "226") > 0 Then
            FTPUpload = True    
            Set objRegex = new RegExp
            objRegex.Pattern = "226(.\w+.*)"
            objRegex.Global = True
            objRegex.IgnoreCase = True
            Set Matches = objRegex.Execute(sResults)
            For Each Match in Matches   
                Result=objRegex.Replace(Match.Value,"$1")
                MsgBox " Le Fichier ""c:\script\monip.txt"" a été uploadé avec succés !"& vbcr & Result,64,"Résultat du Transfert d'Upload !"
            Next
        ElseIf InStr(sResults, "File Not Found") > 0 Then
            MsgBox "Erreur : Fichier Non Trouvé ?",16,"Erreur : Fichier Non Trouvé ?"
            FTPUpload = "Erreur : Fichier Non Trouvé ?"
        ElseIf InStr(sResults, "Login authentication failed") > 0 Then
            MsgBox "Login authentication a echoué !",16,"Login authentication failed !"
            FTPUpload = "Error: Login Failed."
        Else
            FTPUpload = "Error: Unknown."
            MsgBox "Erreur: Inconnu ?",16,"Erreur: Inconnu ?"
        End If
     
        oFTPScriptFSO.DeleteFile(sFTPTempFile)
        oFTPScriptFSO.DeleteFile (sFTPResults)
        Set oFTPScriptFSO = Nothing
        Set oFTPScriptShell = Nothing
    End Function
     
    'Fonction Pour Ajouter "les doubles quotes dans une variable" 
    Function qq(strIn) 
        qq = Chr(34) & strIn & Chr(34)
    End Function

  19. #19
    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 ligne 96 pose toujours problème.

    Est-ce qu'il peu s'agir d'une mauvaise installation d'un bidule, d'une fonctionnalité absente dans win7 home officiel, d'une merdouille de ma part quelque part ..?

    edit 1 : j'ai répondu trop vite !!

    edit 2 : que l'adresse soit 83.xxx.xxx.xxx ou 83.125.236.12 (valeurs bidon) on obtient le même comportement, pareil quelque soit les valeurs pour l'user et le mdp...

    edit 3 : à noter que le script attends que je ferme notepad pour poursuivre son exécution, je sais pas si c'est un comportement normal.

  20. #20
    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
    Est-ce-que vous pouvez uploader avec http://www.developpez.net/forums/d13...x/#post7200793

    et ça donne quoi comme réponse du serveur FTP

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 3 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