Scripting FTP avec DriveHQ CommandFTP

Scripting FTP/SFTP avec DriveHQ CommandFTP


1. Introduction
2. Syntaxe et paramètres de la commande DriveHQ CommandFTP
3. Création de fichiers de script FTP
3.1 Exemple de fichier de script FTP
3.2 Fichier de script FTP avec paramètres
4. Automatisez le transfert de fichiers avec le Planificateur de tâches Windows
5. Synchronisation automatique des dossiers via DriveHQ CommandFTP
6. Références des commandes FTP
6.1 Commandes FTP standard
6.2 Commandes FTP avancées de DriveHQ

1. Introduction

DriveHQ CommandFTP est un client FTP et SFTP en ligne de commande puissant, conçu pour remplacer le client FTP de Windows. Il prend en charge les scripts FTP et est compatible avec tous les serveurs FTP/SFTP standard.

Le protocole FTP/SFTP est extrêmement populaire pour le transfert de fichiers et de dossiers volumineux sur Internet. Le client FTP en ligne de commande est largement utilisé pour l'automatisation des transferts de fichiers grâce aux scripts FTP. De nombreux utilisateurs privilégient le client FTP intégré à Windows. Cependant, ce dernier présente quelques inconvénients majeurs:

  • 1. Il ne prend en charge que le mode FTP actif, qui est souvent bloqué par les routeurs, les pare-feu ou les logiciels de sécurité.
  • 2. Il ne prend en charge que le protocole FTP simple, sans chiffrement des données.
  • 3. Il ne prend pas en charge la reprise/nouvelle tentative automatique.

DriveHQ CommandFTP est conçu pour remplacer le client FTP par défaut de Windows. Il présente les avantages suivants:

  • 1. Il prend en charge les modes FTP actif et passif.
  • 2. Il prend en charge FTP sur SSL (FTPS et FTPES) et SFTP.
  • 3. Il prend en charge la reprise/nouvelle tentative automatique.
  • 4. Il prend en charge la compression et le chiffrement des données.
  • 5. Il permet de télécharger/téléverser des dossiers.
  • 6. Il prend en charge la mise en miroir/synchronisation des dossiers.
  • 7. Il prend en charge la journalisation des événements à des fins d'audit et de dépannage.
  • 8. Il peut envoyer des rapports par courriel après une opération.
  • 9. Il prend en charge des scripts FTP plus puissants.

Dans de nombreux cas, DriveHQ CommandFTP peut remplacer directement le client FTP de Windows. Ils partagent une syntaxe et des paramètres de ligne de commande similaires. Cependant, DriveHQ CommandFTP offre bien plus de fonctionnalités. Il permet de gérer des transferts de fichiers complexes en une seule commande. Grâce à sa compatibilité SFTP, vous pouvez écrire un script FTP et l'exécuter sur un serveur SFTP.

2. Syntaxe et paramètres de la commande DriveHQ CommandFTP

Syntaxe


cmdftp FTP_SERVER [-u:USERNAME] [-p:PASSWORD] [-i] [-A] [-k:"PRIVATE_KEY_FILE"] [-s:"FTP_SCRIPT_FILE"] [-d:"LOG_FILE"] [-m:"SOURCE_FTP_SERVER", "DESTINATION_FTP_SERVER"] [CMDOPTIONS]
cmdftp [-s:"FTP_SCRIPT_FILE"] [-d:"logfile"]

Paramètres

Paramètre Description
FTP_SERVER Le nom ou l'adresse IP du serveur FTP/SFTP, par exemple ftp.drivehq.com, ftp://ftp.drivehq.com ou ftps://ftp.drivehq.com. Ce paramètre est obligatoire sauf s'il contient l'option -s:FTP_SCRIPT_FILE
-u:USERNAME Spécifie le nom d'utilisateur du compte FTP/SFTP.
-p:PASSWORD Spécifie le mot de passe du compte FTP/SFTP.
-k:"PRIVATE_KEY_FILE" Facultatif. Spécifie le chemin d'accès au fichier de clé privée SFTP.
-s:"FTP_SCRIPT_FILE" Facultatif. Spécifie le chemin d'accès au fichier de script FTP. Si ce paramètre est fourni, les autres paramètres sont ignorés, à l'exception de l'option « -d:LOG_FILE ».

Options de commande

/xo[:time] Exclure les anciens fichiers
/xn[:time] Exclure les fichiers les plus récents
/xf:filenames Exclure les fichiers, les fichiers sont séparés par des virgules
/xd:foldernames Exclure les dossiers, les dossiers sont séparés par des virgules

Options de journalisation

-d:"LogFileName" Spécifie le chemin d'accès au fichier journal. Si vous utilisez l'option « -d » sans spécifier de nom de fichier journal, le journal s'affichera dans la fenêtre de la console.

3. Création de fichiers de script FTP

Les scripts FTP sont très populaires auprès des administrateurs informatiques et des intégrateurs de systèmes. Ils sont largement utilisés pour la sauvegarde automatisée des données et le transfert de fichiers. Un script FTP permet de créer un fichier texte contenant une liste de commandes FTP et d'entrées. Ces commandes peuvent ensuite être exécutées séquentiellement. Un script pouvant contenir de nombreuses commandes FTP, il permet de réaliser des transferts de fichiers très complexes.

L'utilisation du client FTP par défaut de Windows pour les scripts FTP est très limitée : il ne prend en charge que le FTP simple, non sécurisé, et uniquement le modèle FTP actif, souvent bloqué par les routeurs et pare-feu. DriveHQ CommandFTP prend en charge la plupart des fonctionnalités du client FTP Windows et propose en outre de nombreuses fonctionnalités absentes de ce dernier. DriveHQ CommandFTP est compatible avec tous les serveurs FTP standard.

Pour écrire un script FTP, vous pouvez d'abord exécuter les commandes FTP en mode interactif. Ouvrez une fenêtre de commande et saisissez les commandes suivantes, comme indiqué dans la capture d'écran ci-dessous:

Ces commandes incluent généralement : se connecter à un serveur FTP, s’authentifier auprès de ce serveur, lister les fichiers et dossiers d’un répertoire, changer de répertoire courant, transférer, télécharger et supprimer des fichiers, etc. Si vous n’utilisez le FTP qu’occasionnellement, cette méthode convient parfaitement. Cependant, si vous devez transférer, sauvegarder ou supprimer des fichiers de manière répétée, par exemple dans le cadre d’une tâche de sauvegarde planifiée ou d’un échange de données informatisé (EDI) avec une autre entreprise, vous pouvez facilement créer un script réutilisable. Associé au Planificateur de tâches du système d’exploitation, ce script vous permettra d’automatiser vos processus métier.

Exemple de fichier de script FTP
Un fichier script FTP contient les mêmes commandes et paramètres que ceux utilisés lors d'une session FTP interactive. Il vous suffit de créer un fichier texte dans un éditeur de texte (par exemple, le Bloc-notes) et d'y saisir les commandes et paramètres comme en mode interactif. L'interface de CommandFTP de DriveHQ est très similaire à celle du client FTP Windows. Les commandes suivantes peuvent être exécutées aussi bien dans le client FTP Windows que dans CommandFTP de DriveHQ. Pour utiliser CommandFTP, veuillez saisir « cmdftp » au lieu de « ftp ». Par exemple ::

C:\>ftp
ftp> open ftp.drivehq.com
Connected to ftp.drivehq.com.
220 Welcome to the most popular FTP hosting service! Save on hardware, software,
 hosting and admin. Share files/folders with read-write permission. Visit http:/
/www.drivehq.com/ftp/;
User (ftp.drivehq.com:(none)): dhqdemo
331 User name ok, need password.
Password: xxxxxxxxx
230 User dhqdemo logged on.
ftp> cd test
250 CWD command successful. "/test" is current directory.
ftp> delete orders.xml.bak
550 File not found.
ftp> rename orders.xml orders.xml.bak
350 File exists, ready for destination name.
250 File "/test/orders.xml" renamed successfully.
ftp> put c:\test\orders.xml
200 Port command successful.
150 Opening BINARY mode data connection for file transfer.
226 Transfer complete
ftp: 41 bytes sent in 0.06Seconds 0.65Kbytes/sec.
ftp> quit
221 Bye

C:\>


Comme vous pouvez le constater, ces commandes vont:
- Connectez-vous à un serveur FTP : ftp.drivehq.com ;
- Saisissez le nom d'utilisateur et le mot de passe ;
- Accédez au répertoire local « c:\test » ;
- Accédez au répertoire FTP « /test » ;
- Supprimez le fichier « Orders.xml.bak » (s'il existe) sur le serveur FTP ;
- Renommez le fichier « Orders.xml » (s'il existe) en « Orders.xml.bak » sur le serveur FTP ;
- Téléversez le fichier local « Orders.xml » sur le serveur FTP ;
- Quitter

Vous pouvez les exécuter dans une fenêtre de commande pour déboguer le code avant de l'enregistrer dans un fichier script. Le contenu du script sera le suivant :

open ftp.drivehq.com
USERNAME
xxxxxxxxx
cd test
delete orders.xml.bak
rename orders.xml orders.xml.bak
put c:\test\orders.xml
quit

Le script FTP ci-dessus peut être exécuté quotidiennement pour transférer automatiquement les nouvelles informations de commandes vers le serveur FTP. Il téléchargera le fichier « Orders.xml » le plus récent sur le serveur FTP ; avant cela, il renommera (sauvegardera) le fichier précédent.
Pour exécuter le script FTP, il suffit d'exécuter la commande FTP avec l'option -s. Avec le client FTP Windows, vous pouvez utiliser:
	ftp -s:ftpscript.txt 

Avec le client DriveHQ CommandFTP, vous pouvez utiliser
	cmdftp -s:ftpscript.txt 
    

Scripts FTP avec paramètres
Le script FTP ci-dessus est statique. Il peut être exécuté à plusieurs reprises, mais il manque de flexibilité. Par exemple, si vous devez transférer des données pour plusieurs clients, vous souhaiterez probablement utiliser des dossiers différents. Pour réutiliser le même script FTP, il doit prendre en charge des paramètres supplémentaires. Deux solutions sont possibles:
(1) Utilisez un script batch pour créer dynamiquement le script FTP. Les scripts batch Windows acceptent des paramètres en ligne de commande. Si vous utilisez le client FTP Windows, c'est la seule solution.
(2) DriveHQ CommandFTP prend en charge des paramètres supplémentaires.
Avec la première méthode, vous devez créer un fichier batch, par exemple test.bat. Enregistrez-le dans le dossier C:\test. Vous pouvez ensuite exécuter le fichier batch en tapant :

	c:\test\test.bat PARAM1 PARAM2 ...

Le fichier test.bat ressemblera à ceci :

@echo off
echo open ftp.drivehq.com> ftpscript.txt
echo USERNAME>> ftpscript.txt
echo PASSWORD>> ftpscript.txt
echo cd %1>>  ftpscript.txt
echo delete %2.bak>>  ftpscript.txt
echo rename %2 %2.bak>> ftpscript.txt
echo put c:\%1\%2>> ftpscript.txt
echo quit>> ftpscript.txt


Ainsi, vous pouvez transmettre les arguments du fichier batch au script FTP. Le même script batch peut être réutilisé pour différentes entreprises, par exemple.:
    c:\test\test.bat c:\OrdersOfCompanyA ordersOfCompanyA.xml
    c:\test\test.bat c:\OrdersOfCompanyB ordersOfCompanyB.xml
Avec DriveHQ CommandFTP, vous pouvez exécuter un script FTP avec des arguments supplémentaires. Ainsi, vous n'avez pas besoin de créer un fichier de script batch. Il vous suffit d'exécuter le script FTP avec la commande suivante :
    
cmdftp -s:ftpscript.txt argument1 argument2 argument3 ...
    
Le fichier de script FTP doit être légèrement modifié comme suit:

# %1 is like "test", %2 is like "orders.xml"
# This file is saved as c:\temp\ftpscript2.txt
# to run it, use:
# cmdftp -s:c:\temp\ftpscript2.txt -%1:test -%2:orders.xml

open ftp.drivehq.com
USERNAME
PASSWORD
cd /%1
delete /%1/%2.bak
rename /%1/%2 /%1/%2.bak
put c:\%1\%2
quit

Dans le fichier de script ci-dessus, le nom du dossier est remplacé par %1 et le nom du fichier par %2. Pour exécuter le script FTP, vous devez fournir ces paramètres en tant qu'arguments de ligne de commande.
    
cmdftp -s:c:\temp\ftpscript2.txt -%1:test -%2:orders.xml
    
Lorsque DriveHQ CommandFTP exécute le fichier de script, il remplacera %1 par "test" et %2 par "orders.xml".

4. Automatisez le transfert de fichiers avec le Planificateur de tâches Windows

Que vous utilisiez un fichier batch ou directement DriveHQ CommandFTP, vous pouvez planifier le transfert de fichiers dans le Planificateur de tâches Windows. Vous pouvez programmer l'exécution de la tâche quotidiennement, hebdomadairement ou mensuellement. Dans les paramètres avancés, vous pouvez même la configurer pour qu'elle s'exécute toutes les quelques heures ou minutes. Vous pouvez également définir l'heure de démarrage de la tâche. Pour lancer le Planificateur de tâches, saisissez « Planificateur de tâches » dans le champ de recherche (voir la capture d'écran ci-dessous):

Launch Windows Task Scheduler

Cliquez sur Planificateur de tâches pour lancer le Planificateur de tâches Windows.

Click create basic task in Windows Task Scheduler

Pour créer une tâche, cliquez sur « Créer une tâche de base ».

Create basic scheduled task

Saisissez le nom et la description de la tâche, puis cliquez sur Suivant.

Select task trigger / schedule

Sélectionnez la fréquence de vos tâches. Vous pouvez choisir une exécution quotidienne, hebdomadaire ou mensuelle. Si vous souhaitez exécuter la tâche toutes les heures, vous pourrez le faire ultérieurement dans les paramètres avancés. Cliquez sur Suivant pour définir l'action.

Scheduled Task - Action - select a program

Sur la page Action, sélectionnez « Démarrer un programme », puis cliquez sur Suivant.

Scheduled Task - Action - Select DriveHQ CommandFTP

Sélectionnez DriveHQ CommandFTP (cmdftp.exe) comme programme. Ajoutez les paramètres de ligne de commande dans le champ « Ajouter des arguments ». Le champ « Démarrer dans » est facultatif. Vous pouvez indiquer le même dossier que le fichier EXE. Cliquez sur Suivant pour terminer la création de la tâche.

Pour accéder aux paramètres avancés, cliquez sur « Bibliothèque de planification des tâches ». Vous y verrez la liste des tâches planifiées. Double-cliquez sur la tâche « Téléverser les commandes » pour modifier ses paramètres.

Scheduled Task - Advanced Settings - Edit Task Properties

Par défaut, la tâche ne s'exécutera que lorsque l'utilisateur est connecté. Vous pouvez modifier ce paramètre ici pour exécuter la tâche même lorsque l'utilisateur n'est pas connecté.

5. Synchronisation automatique des dossiers via DriveHQ CommandFTP

DriveHQ CommandFTP prend en charge la synchronisation de dossiers. Synchroniser un dossier local avec un dossier FTP est extrêmement simple. Il suffit d'utiliser la commande suivante:

	cmdftp FTP_SERVER -u:nom_utilisateur -p:mot_de_passe -m:"DOSSIER_LOCAL|DOSSIER_FTP"

Vous pouvez utiliser le Planificateur de tâches Windows pour exécuter cette commande et synchroniser périodiquement les deux dossiers.

6. Références des commandes FTP

Une fois connecté à un serveur FTP, vous pouvez lui envoyer des commandes FTP. Le client FTP Windows prend en charge les commandes suivantes. Veuillez noter que ces commandes ne sont pas identiques à Commandes FTP définies dans le protocole FTP. Chaque commande du protocole FTP ne traite généralement qu'une seule opération simple. Une commande FTP dans un client FTP Windows peut utiliser plusieurs commandes du protocole FTP.

DriveHQ CommandFTP est similaire au client FTP de Windows. Il prend en charge des commandes et une syntaxe similaires. De plus, il prend également en charge quelques commandes FTP avancées spécifiques à DriveHQ, par exemple les commandes permettant de copier, déplacer, téléverser, télécharger ou supprimer des dossiers.

6.1 Commandes du client FTP Windows

Le client FTP de Windows (ftp.exe) prend en charge les commandes FTP suivantes :
Commandes FTP Description
! Cette commande permet de basculer entre le système d'exploitation local et le serveur FTP. Par défaut, lorsque vous vous connectez à un serveur FTP, c'est ce dernier qui est utilisé. Si vous souhaitez exécuter une commande localement, vous pouvez généralement utiliser !CMD_NAME, e.g. !dir, !mkdir, etc.
? Affiche les informations d'aide.
append Ajouter à un fichier.
ascii Configurer le mode de transfert ASCII.
bell Activez l'option « Bip de fin de commande ».
binary Définir le mode de transfert binaire.
bye Déconnectez la session FTP et quittez.
cd Changer de répertoire.
close Mettez fin à la session FTP.
delete Supprime un fichier.
debug Activer ou désactiver le mode débogage.
dir Liste les fichiers et sous-dossiers d'un répertoire.
disconnect Déconnectez la session FTP.
get Récupérer le fichier depuis le serveur FTP distant.
glob Activez ou désactivez la reconnaissance de caractères génériques. Lorsqu'elle est désactivée, les caractères génériques sont pris en charge dans les noms de fichiers (dans le nom du fichier) mettre et obtenir Les commandes sont prises au pied de la lettre.
hash Activer/désactiver l'affichage du symbole « # » pour chaque tampon transféré.
help Afficher les informations d'aide ; généralement, utiliser la commande help NOM_DE_LA_COMMANDE.
lcd Affiche le répertoire de travail local actuel si la commande est saisie seule ; sinon, modifie le répertoire de travail local.
literal Envoyer une commande arbitraire au serveur FTP connecté avec une réponse attendue sur une seule ligne.
ls Lister les fichiers du dossier FTP.
mdelete Supprimer plusieurs fichiers sur le serveur FTP.
mdir Liste les fichiers/sous-dossiers de plusieurs répertoires FTP.
mget Téléchargez plusieurs fichiers depuis le serveur FTP vers votre dossier de travail local.
mkdir Créez un nouveau répertoire.
mls Lister le contenu de plusieurs répertoires FTP.
mput Téléversez plusieurs fichiers locaux sur le serveur FTP.
open Se connecter à un serveur FTP.
prompt Active ou désactive l'invite interactive pour plusieurs commandes.
put Téléversez un fichier sur le serveur FTP.
pwd Imprimer le répertoire de travail sur le serveur FTP.
quit Déconnectez-vous du serveur FTP et quittez.
quote Identique à la commande littérale (Envoyer une commande ftp arbitraire).
recv Télécharger/recevoir un fichier depuis le serveur FTP.
remotehelp Obtenez de l'aide auprès d'un serveur distant.
rename Renommer un fichier sur le serveur FTP.
rmdir Supprimer un répertoire sur le serveur FTP.
send Envoyez un seul fichier.
status Affiche l'état des options actuelles.
trace Activer/désactiver le suivi des paquets.
Type Définir le type de transfert de fichiers.
user Envoyer les informations du nouvel utilisateur (nom d'utilisateur).
verbose Activer ou désactiver le mode verbeux.

6.2 Commandes FTP avancées de DriveHQ

DriveHQ CommandFTP prend en charge quelques commandes FTP plus avancées:

Commandes FTP Description
download Télécharger un dossier ou un fichier.
Syntaxe: Download [FTP-FILEorFOLDER-PATH] [LOCAL-FILEorFOLDER-PATH]
upload Téléversez un dossier ou un fichier.
Syntaxe: Upload [LOCAL-FILEorFOLDER-PATH] [FTP-FILEorFOLDER-PATH]
mirror Mettre en miroir un dossier local et un dossier FTP.
Syntaxe: MIRROR [LOCAL-FOLDER-PATH] [FTP-FOLDER-PATH]
deleteoldfiles Dans le dossier spécifié, supprimez les fichiers datant de plus de x jours.
Syntaxe: deleteoldfiles [FTP-PATH] /xo:[time]