La réponse de Jesper montre comment faire cela d'une manière qui correspond le plus à la façon dont la question a été rédigée.
Je propose une autre solution : n'utilisez pas le ftp. Le FTP n'offre pas de sécurité sur un réseau. Il peut également poser des problèmes avec certaines conceptions de réseau, notamment en cas d'utilisation de NAT ou d'un pare-feu. Ces problèmes n'existent probablement pas aujourd'hui si les téléchargements manuels par FTP fonctionnent bien, mais ils pourraient commencer à exister si quelqu'un apporte des modifications. Par exemple, des problèmes pourraient survenir si vous remplacez un modem DSL par un autre modem DSL offrant des fonctionnalités différentes.
La solution préférée est de ne pas utiliser le FTP. Ce que vous pouvez utiliser à la place peut être limité en fonction de ce que l'hébergeur propose comme option. Une excellente alternative est SFTP, implémentée avec PSFTP.EXE de PuTTY. Il peut y avoir une certaine ambiguïté car il existe de multiples variantes sécurisées de FTP, comme FTPS. SCP, implémenté avec PSCP de PuTTY, peut être un peu plus facile à utiliser dans certains cas, je suggère donc de commencer par là.
Pour ce faire, commencez par récupérer les fichiers sur le site de téléchargement de PuTTY. http://chiark.greenend.org.uk/~sgtatham/putty/download.html propose pscp.exe et le fichier similaire psftp.exe. Le fichier the.earth.li/~sgtatham/putty/latest/x86/ (pour la version 0.63, qui est la dernière version au moment où nous écrivons ces lignes) peut être le plus simple pour les personnes qui préfèrent être guidées à travers un processus d'installation facile en utilisant une interface graphique, tandis que le fichier putty.zip contient également putty.exe et pscp.exe et psftp.exe
La première version de votre fichier batch ressemblera à quelque chose comme ceci :
C:\Program Fichiers \PuTTY\PSCP.exe -l nom d'utilisateur C:\dir\stuff\to\upload *.* remoteSever :.
Notez le point à la fin, qui spécifie l'emplacement où les fichiers seront placés. Personnalisez-le si nécessaire.
Une fois que cela fonctionne bien, vous voudrez objecter que l'utilisateur doit taper un mot de passe. Oui, cela peut être résolu, mais c'est un peu plus de travail, mais c'est généralement une option pour les serveurs qui supportent l'utilisation de PSFTP ou PSCP. Vous voudrez probablement utiliser PuTTYGen pour créer une clé. Enregistrez la clé privée au format OpenSSH (et non au format *.PPK préféré de PuTTYGen). Cette clé privée devra être transférée sur le serveur. Utiliser PuTTY sera probablement un outil plus facile pour s'assurer que la clé privée est installée là où elle doit l'être. Une fois la clé privée manipulée, le fichier batch peut être modifié pour utiliser :
C:\Program Fichiers \PuTTY\PSCP.exe -l nom d'utilisateur -i C:\mykeys\mykey.pub C:\dir\stuff\to\upload *.* remoteSever :.
Si PSCP fonctionne bien, modernisez légèrement les choses en essayant PSFTP.exe à la place. Si cela fonctionne, c'est un peu préférable, car les auteurs d'OpenSSH notent que SFTP est un protocole plus développé que SCP.
Les alternatives consistent à utiliser des protocoles autres que FTP, SFTP ou SCP, comme HTTP(S). HTTP(S) peut probablement être automatisé en utilisant WGET avec --post-file=filename mais vous devrez trouver quelle URL votre hôte web utilise pour autoriser les téléchargements HTTP. En fait, cURL est préférable à WGET. Sa licence est plus souple, et je pense que le code est plus récent et plus simple également.
Il peut y avoir d'autres implémentations disponibles. WinSCP supporte un client en ligne de commande appelé winscp.com (et il y a aussi winscp.exe qui fournit l'interface graphique). Windows script Host peut utiliser HTTP en utilisant un objet qui est intégré dans Microsoft Windows, il n'y a donc pas besoin de télécharger un fichier exécutable. Encore une fois, je me réfère à la réponse de Jesper comme une réponse que vous pouvez trouver fonctionner assez bien pour vous, et qui utilise un logiciel qui est généralement pré-installé avec Windows, donc aucun logiciel supplémentaire ne doit être téléchargé. Je parie qu'il y a beaucoup plus d'options disponibles... vous avez beaucoup de choix parmi lesquels vous pouvez choisir.
0 votes
Je vous suggère d'essayer de taper votre script ligne par ligne dans une invite de commande pour voir si vous obtenez des erreurs ou des indications. Sinon, je vous recommande d'essayer avec telnet ou psftp (qui fait partie du paquet puTTy). Cela pourrait vous aider à résoudre votre problème.
0 votes
Entre systèmes de type unix, scp ou rsync serait un mécanisme de téléchargement facilement scriptable. Bien sûr, cela est moins utile si le client ou le serveur est sous Windows.