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 |
Partager