OVH Cloud OVH Cloud

FTP avec VBScript

15 réponses
Avatar
GOWAP
Coucou,

quelqu'un a un exemple en VBscript pour télécharger un fichier sur un FTP.
Le but est de télécharge journalièrement un fichier de définition viral (qui
change de nom) tous les jours ; je drois prendre le fichier EXE le plus
récente qui correspond a un format de nom TOTOxxx.EXE.

Donc, j'aurais besoin de :

- me connecter a un ftp (anonime)
- liste les fichiers d'un dossier
- scanner la liste pour repérer le fichier intérrésant
- télécharger le fichier dans un dossier temporaire
- vérifier qu'il n'y a pas d'erreur de transfert.

Au passage, peut-on géré la vitesse de téléchargement (je veux pas blinder
le réseau, c'est de l'arrire plan une fois par jour)

Merci tous plien.
GOWAP

10 réponses

1 2
Avatar
Fred
"GOWAP" <gowap@@@fr.fm> a écrit dans le message de news:

Coucou,

quelqu'un a un exemple en VBscript pour télécharger un fichier sur un FTP.
Le but est de télécharge journalièrement un fichier de définition viral
(qui
change de nom) tous les jours ; je drois prendre le fichier EXE le plus
récente qui correspond a un format de nom TOTOxxx.EXE.

Donc, j'aurais besoin de :

- me connecter a un ftp (anonime)
- liste les fichiers d'un dossier
- scanner la liste pour repérer le fichier intérrésant
- télécharger le fichier dans un dossier temporaire
- vérifier qu'il n'y a pas d'erreur de transfert.

Au passage, peut-on géré la vitesse de téléchargement (je veux pas blinder
le réseau, c'est de l'arrire plan une fois par jour)

Merci tous plien.
GOWAP




Bonjour,
Je n'ai pas de réponse toute prête concernant exactement ton problème,
cependant :
- tu peux établir une connexion FTP en spécifiant un fichier de commande
texte : ceci pour lister les fichiers sur le serveur et récupérer une liste
en local (commande mdir, ou mls)
- ayant la liste des fichiers du serveur (et la liste des fichiers que tu as
précédemment téléchargé), tu peux assez facilement en déduire le nom du
fichier à télécharger et générer un nouveau fichier de commandes ftp que tu
relance au moyen d'une seconde connexion.
En ce qui me concerne, je récupère ainsi toutes les nuits un fichier de MAJ,
mais à la différence de toi, le nom du fichier le plus récent est toujours
le même. Donc je n'ai pas eu à faire la seconde manip.

Avatar
Gilles RONSIN
"GOWAP" <gowap@@@fr.fm>, le lun. 14 févr. 2005 13:18:00, écrivait
ceci:

Coucou,
Pareil :-)


quelqu'un a un exemple en VBscript pour télécharger un fichier sur
un FTP. Le but est de télécharge journalièrement un fichier de
définition viral (qui change de nom) tous les jours ; je drois
prendre le fichier EXE le plus récente qui correspond a un format
de nom TOTOxxx.EXE.


Voilà celui que j'utilise (il vérifie aussi qu'il n'a pas déjà été
lancé ce jour) : (il est en deux parties)

---------av.bat---------
@echo off
c:
cdav
if exist lastdate goto checkdate
echo premiere execution>lastdate
:checkdate
echo .|date>newdate
fc lastdate newdate|find "aucune" >nul
if errorlevel 1 goto todo
Echo Script deja execute aujourd'hui.
goto end
:todo
del aup*.exe
if not exist last md last
echo open ftp.xxxxx.com>temp.ftp
echo anonymous>>temp.ftp
echo temp.ftp
echo binary>>temp.ftp
echo mget *.exe>>temp.ftp
echo bye>>temp.ftp
ftp -i -s:temp.ftp
del temp.ftp
for %%f in (aup*.exe) do call gere %%f
cd last
for %%f in (aup*.exe) do if not exist ..%%f del %%f
cd..
autodownload
:end
del lastdate
ren newdate lastdate
-------------------------------------------

la commande 'gere' me permet de retransmettre le fichier dans un de mes
serveur pour les copains et de renommer le dernier en autodownload.exe.


--
Embryon de site : http://gilles.ronsin.free.fr
Nouvelle astuce : Script de création de raccourcis cible
http://gilles.ronsin.free.fr/#targetlnk
Il est impossible pour un optimiste d'être agréablement surpris.

Avatar
GOWAP
Merci de vos réponse, mais ma question est pour le script en VBScript !

En batch, j'y arrive tres bien.

A votre bon coeur pour des méthodes d'acces au FTP avec vbs... merci.
GOWAP
Avatar
Denis
Salut !
Avec un objet wscript.shell, ça ne fonctionnerais pas ?
Exemple avec un ping :

Set objshell = CreateObject("wscript.shell")
objtextstream_pingresult = objshell.exec("ping -n 1 -w 10 " &
str_host).stdout.readall


DNI

"GOWAP" <gowap@@@fr.fm> a écrit dans le message de news:

Merci de vos réponse, mais ma question est pour le script en VBScript !

En batch, j'y arrive tres bien.

A votre bon coeur pour des méthodes d'acces au FTP avec vbs... merci.
GOWAP




Avatar
Fred
"GOWAP" <gowap@@@fr.fm> a écrit dans le message de
news:
Merci de vos réponse, mais ma question est pour le script en VBScript !

En batch, j'y arrive tres bien.

A votre bon coeur pour des méthodes d'acces au FTP avec vbs... merci.
GOWAP




Bonjour,
Dans ce cas, peut-être ceci ?
http://www.chilkatsoft.com/ChilkatFtpDoc.asp

Avatar
GOWAP
Bonjour,
Dans ce cas, peut-être ceci ?
http://www.chilkatsoft.com/ChilkatFtpDoc.asp

Est-ce que le script ASP peut etre adapter au VBS ?

Car le lien que tu me donne (merci) est pour les objets ASP. (sniff).

GOWAP

Avatar
Fred
"GOWAP" <gowap@@@fr.fm> a écrit dans le message de news:

Bonjour,
Dans ce cas, peut-être ceci ?
http://www.chilkatsoft.com/ChilkatFtpDoc.asp

Est-ce que le script ASP peut etre adapter au VBS ?

Car le lien que tu me donne (merci) est pour les objets ASP. (sniff).

GOWAP


Bonsoir,

A vrai dire j'ai fait une recherche avec "FTP COM component" qui me donne
d'autres pages mais celle ci me paraissait intéressante.
ASP n'est pas un langage de script. Mais dans les pages ASP, on peut
utiliser du VBScript (ou un autre langage de script). Dans les exemples du
site chikatsoft, il me semble que ce sont bien des bouts de code vbscript.
Comme il est précisé sur le haut de la page des exemples, tu peux utiliser
leur composant avec différents langages.
Pourquoi pas dans une macro VBA sous Excel, dans un programme VB6, dans un
script dans une page HTML, etc ...


Avatar
Alex
Salut,

Comme Internet Explorer est capable de faire du FTP, il suffit d'utiliser
un objet Internet Explorer pour faire le boulot.
J'ai trouvé l'exemple suivant sur l'excellent site de Clarence Washington.
(
http://cwashington.netreach.net/depo/view.asp?IndexE0&ScriptType=vbscript )


Alex


' NAME : GetDATs.vbs
' AUTHOR : Steve Dubuc
' E-MAIL :
' DATE : 6/22/2000
' LANGUAGE : Windows Scripting Host v5.1
' COMMENT : This program was written to automate the downloading and
' distribution of McAfee's DAT & SuperDAT files within my
' company's network. I run this script every weekday morning
' at 0500 local time from the Task Scheduler.
'
' I run it using WScript.exe. If you prefer to use CScript.exe,
' you probably want to change the WSCript.Popup command lines
' to WScript.Echo (don't forget to remove the timer argument!)
'
' First you will need to change objINet.PassWord to your
' e-mail address.
'
' Second, you will need to change the LocalDirectory constant
' to the place where you want to the files to be downloaded.
' I download directly to one of my file servers.
'
' I have a shortcut on each of my users' desktops which points
' to the renamed SDatnnmm.exe file, which is why I copy and
' rename the SDat file to the root of the McAfee share point.
'
'==================
Option Explicit

Dim FSO, WSH, objINet, SDatFN, DatFN, sTime, dTime, CurrVer

Set WSH = CreateObject("WScript.Shell")
Set FSO = CreateObject("Scripting.FileSystemObject")
Set objINet = CreateObject ("InetCtls.Inet.1")

sTime = Timer
WriteLog "GetDATs Starting"

Const INetWaitTime = 100
Const RemoteDirectory = "/pub/antivirus/datfiles/4.x/"
Const LocalDirectory = "ServerMcAfeeShare"

With objINet
.RequestTimeout = 15
.UserName = "anonymous"
.Password = ""
.URL = "ftp://ftp.mcafee.com"
End With

objINet.Execute , "DIR " & RemoteDirectory & "sdat*.*"
INetWait
SDatFN = Left (objINet.GetChunk (1, 0), 12)

If FSO.FileExists (LocalDirectory & "Download" & SDatFN) Then
WSH.Popup "Already have current version.", 60
WriteLog "Version Numbers match, Quitting"
WScript.Quit
End If

CurrVer = Mid(SDatFN, 5, 4)

' Get the DAT file
DatFN = "DAT-" & CurrVer & ".zip"
WriteLog " GETting " & DatFN
WSH.Popup "Getting " & DatFN, 5
dTime = Timer
objINet.Execute , "GET " & RemoteDirectory & DatFN & " " & LocalDirectory &
"Download" & DatFN
INetWait
WriteLog " Successful Download of " & DatFN & " Elapsed Time: " &
ElapsedTime (dTime)

' Get the SuperDAT file
WriteLog " GETting " & SDatFN
WSH.Popup "Getting " & SDatFN, 5
dTime = Timer
objINet.Execute , "GET " & RemoteDirectory & SDatFN & " " & LocalDirectory &
"DownloadSDat" & CurrVer & ".exe"
INetWait
WriteLog " Successful Download of " & SDatFN & " Elapsed Time: " &
ElapsedTime (dTime)

' Copy the SuperDAT file to the root of the McAfee Share
WriteLog " Copying SDatFN to Share Root"
WSH.Popup "Copying " & SDatFN & " to ShareRoot", 5
FSO.CopyFile LocalDirectory & "Download" & SDatFN, LocalDirectory &
"SuperDAT.eXe"
FSO.DeleteFile LocalDirectory & "superdat.log"

WSH.Run LocalDirectory & "superdat.exe /silent" ' Run the update locally
' I want to see this message when I get to work, which is why it doesn't
timeout
WSH.Popup SDatFN & " Successfully Downloaded and Installed" & vbCrLf _
& "Elapsed Time: " & ElapsedTime (sTime)
WriteLog "Successful EOJ"

'==================
Sub WriteLog (byval TextIn)
Dim LogFile

Set LogFile = FSO.OpenTextFile("E:GetDATs.log", 8, True)

LogFile.WriteLine(FormatDateTime(Date, vbShortDate) & " " & _
FormatDateTime(Time, vbLongTime) & vbTab & TextIn)

LogFile.Close
End Sub

Function ElapsedTime (byVal StartTime)
Dim TotalTime, Hour, Minute, Second

If Timer < StartTime Then ' program was running at midnight
TotalTime = (Timer + 86400) - StartTime
Else
TotalTime = Timer - StartTime
End If

Hour = Int(TotalTime / 3600)
TotalTime = TotalTime - (Hour * 3600)

Minute = Int(TotalTime / 60)
TotalTime = TotalTime - (Minute * 60)

Second = TotalTime

If Hour < 10 Then _
ElapsedTime = "0"
ElapsedTime = ElapsedTime & FormatNumber (Hour, 0) & ":"

If Minute < 10 Then _
ElapsedTime = ElapsedTime & "0"
ElapsedTime = ElapsedTime & FormatNumber (Minute, 0) & ":"

If Second < 10 Then _
ElapsedTime = ElapsedTime & "0"
ElapsedTime = ElapsedTime & FormatNumber (Second, 0)
End Function

Sub INetWait
Do While objINet.StillExecuting
WScript.Sleep INetWaitTime
Loop
End Sub
Avatar
GOWAP
Ouba,

La ca ma l'aire d'etre du VBscript !

Il faut que je m'y planche...
Le temps que je digère tous ca...

Merci tous plien.
GOWAP
Avatar
Fred
"GOWAP" <gowap@@@fr.fm> a écrit dans le message de news:

Ouba,

La ca ma l'aire d'etre du VBscript !

Il faut que je m'y planche...
Le temps que je digère tous ca...

Merci tous plien.
GOWAP




Je vois qu'en fait nous ne nous étions pas bien compris.
Alors j'ai téléchargé et installé le composant chilkatFTP
et voila un exemple d'utilisation dans une macro excel
-------
Sub test()
Dim oFTP As New ChilkatFTP
With oFTP
.Hostname = "ftp.f-secure.com"
.Connect
.ChangeRemoteDir "anti-virus"
.ChangeRemoteDir "updates"
.GetFile "readme.txt", "C:testFTP.txt"
.Disconnect
End With
End Sub
-----
et le même exemple en vbs
-----
set oFTP = CreateObject("ChilkatFTP.ChilkatFTP")
With oFTP
.Hostname = "ftp.f-secure.com"
.Connect
.ChangeRemoteDir "anti-virus"
.ChangeRemoteDir "updates"
.GetFile "readme.txt", "C:testFTP.txt"
.Disconnect
End With
----

Je pense que c'est relativement simple.
Non ?

1 2