Navigation : DEVELOPPEMENT > VBS, WSH
SCRIPT DE PUBLICATION FTP VIA APPEL D'UN BATCH
Cet article présente un outil bien pratique qui permet d'automatiser la publication de fichiers vers un serveur FTP grace à l'appel d'un batch dos. L'outil est inspiré d'un script publié sur le site Windows IT Pro, le lien est présent en pied de page. Pour ma part j'ai ajouté un paramètre pour définir l'emplacement où le/les fichiers seront uploadés.
www.polyteknique.netPRINCIPE GENERAL
La publication se fait grace à l'appel d'un batch Windows. Tous les fichiers à uploader doivent se trouver dans un seul repertoire local et iront dans un seul repertoire sur le FTP, c'est à dire que le script ne prévoit pas d'uploader le fichier_1 dans le repertoire_1 et un fichier_2 dans un autre repertoire.

Le batch qui appelle le VBS doit avoir pour unique paramètre l'emplacement où les fichiers seront uploadés. Il utilise la commande FTP de windows avec l'option -s qui permet de donner en argument un fichier de commandes FTP à exécuter une fois connecté au serveur.

Les script VBS est paramétré ici pour n'uploader que les fichiers avec une extentions .txt, cette partie est à modifier selon vos besoins.

Pour faire fonctionner l'outil, les deux scripts et les fichier à uploader sont à placer dans un dossier C:\ftp_queue, à modifier aussi selon vos besoins...

Le batch est à exécuter ainsi : C:\ftp_queue\monFichierBatch.bat /monRep/Distant/
www.polyteknique.netSCRIPT DE GENERATION DES COMMANDES FTP
'========================================================
' genftpscript.vbs : Génère les commandes FTP pour
' uploader un ou plusieurs fichiers sur un serveur FTP :
'========================================================

Const root      = "C:\ftp_queue"
Const scriptnam = "C:\ftp_queue\msgup.ftp"
Const ftplog    = "C:\ftp_queue\ftp.log"

set fs = CreateObject("Scripting.FileSystemObject")

'-------------------------------------------------
' Put Date / Timestamp in log for current session
'-------------------------------------------------

set f_log = fs.OpenTextFile(ftplog,8,TRUE) ' Open in append mode
f_log.writeline("")
f_log.writeline("=============================")
f_log.writeline("New ftp session " & now())
f_log.writeline("=============================")
f_log.close

'------------------------------------------------
'  Create new ftp script with current filenames
'------------------------------------------------

set startfolder = fs.GetFolder(root)
set filc = startfolder.Files   ' Get file collection

set f_out = fs.CreateTextFile(scriptnam,TRUE) ' New file
f_out.writeline("user monuser monpassword")   ' log-on with User ID / pw

f_out.writeline("cd " & Wscript.Arguments.item(0)) ' Change to directory found in argument

'------------------------------------------------
'  Attention ici, on transfère que les fichiers
' avec une extension .txt (à modifier selon vos
' besoins...)
'------------------------------------------------

For each fil in filc
     if right(fil.name,3) = "txt" then
        f_out.writeline("put " & fil.name)
     end if
Next

f_out.writeline("dir")  ' See what got uploaded
f_out.writeline("bye")  ' log off ftp session
f_out.Close
www.polyteknique.netLE BATCH D'EXECUTION DES COMMANDES FTP
C:
cd \ftp_queue\
cscript genftpscript.vbs %1
ftp -s:msgup.ftp -n votreHostFTP >> ftp.log
www.polyteknique.netLES JOURNAUX
Attention, le script génère un fichier ftp.log qui contient votre couple user/password FTP en clair. Ce fichier peut-être amené à grossir donc à vous de voir pour l'épurer de temps en temps.

Le log est assez "bavard" pour corriger les eventuels bugs, en voici un extrait :

=============================
New ftp session 27/03/2006 17:56:01
=============================
Connect‚ … 172.16.87.4.

220 ProFTPD 1.2.10 Server (Serveur ProFTPD de XXXXXXX) [172.16.87.4]
ftp> user XXXXXX XXXXXX
331 Password required for XXXXXX.
230 User XXXXXX logged in.
ftp> cd /bord/ventes/autres/stat
250 CWD command successful
ftp> put stat.txt
200 PORT command successful
150 Opening ASCII mode data connection for stat.txt
226 Transfer complete.
ftp : 12183779 octets envoy‚s en 4,34 secondes … 2804,74 Ko/sec.

ftp> dir
200 PORT command successful
150 Opening ASCII mode data connection for file list
-rw-r--r--   1 XXXXXX XXXXXX 11944438 Mar 27 15:56 stat.txt

226 Transfer complete.
ftp : 76 octets recus en 0,00 secondes … 76000,00 Ko/sec.

ftp> bye
221 Goodbye.

www.polyteknique.netLES LIENS :
LE SCRIPT ORIGINAL SUR WINDOWS IT PRO : http://www.windowsitpro.com/Wi...

Rédigé le : 2006-04-01 15:47:24