Comment télécharger des fichiers à partir du site FTP en une seule ligne de commande sans interaction avec l'utilisateur (Windows)


13

Je sais qu'il existe une commande FTP qui peut être exécutée à partir de la ligne de commande sous Windows et télécharge un fichier à partir d'un site FTP. L'utilisateur + le mot de passe sont spécifiés dans "ce" cmd d'une ligne. Ces options + passtrough de mot de passe devraient être sur cette ligne de commande.

echo open 192.168.1.64 21> ftp.txt
echo anonymous>> ftp.txt
echo ftp@ftp.com>> ftp.txt
echo bin >> ftp.txt
echo get test.txt >> ftp.txt
echo bye >> ftp.txt

ftp -s:ftp.txt

Avez-vous besoin de télécharger via FTP ou avez-vous juste besoin de télécharger ces fichiers avec n'importe quel programme? (Rsync peut lire à partir d'un fichier avec des noms à synchroniser et à partir de la ligne de commande. Scp peut également le faire à partir de la ligne de commande. Les deux ne sont pas aussi anciens que le texte brut, no_true_security FTP).
Hennes

Réponses:


13

Essayez ceci: Fichiers batch - Téléchargements FTP sans assistance

WGET ftp://ftp.mydomain.com/path/file.ext  

pour les téléchargements anonymes

ou:

WGET ftp://user:password@ftp.mydomain.com/path/file.ext  

lorsque l'authentification est requise.


Comme @XavierStuvw l'a souligné via des modifications et des commentaires, le passage WGETà un minuscule wgetfonctionnerait sous Linux.

wget ftp://user:password@ftp.mydomain.com/path/file.ext

Je ne vois aucune commande ayant une option de changement d'utilisateur et de mot de passe sur UNE seule ligne.
soundhax

-s commutateur était dans la phrase si je me souviens
soundhax

2
Bienvenue sur Super User! Bien que cela puisse théoriquement répondre à la question, il serait préférable d'inclure ici les parties essentielles de la réponse et de fournir le lien de référence.
Canadian Luke

1
@CalvT Aucune objection. L'avantage envisagé du commentaire est que les utilisateurs de Linux peuvent atterrir sur cette page après une recherche sur Internet et superviser le système auquel ils s'appliquent. Ça m'est arrivé, en fait.
XavierStuvw

1
@CalvT Le titre est en effet précis, mais les moteurs de recherche visualisent souvent l'intégralité du cadre de réponse et il est facile de s'y plonger. Bien sûr, cela ne devrait pas empêcher le lecteur d'être attentif, mais dans ce cas, c'était une coïncidence que les instructions Linux et Windows soient fondamentalement les mêmes. Bravo, merci.
XavierStuvw

8

J'ai trouvé le chemin:

echo open 192.168.0.1 >> ftp &echo user admin w00t >> ftp &echo binary >> ftp &echo get file.zip >> ftp &echo bye >> ftp &ftp -n -v -s:ftp &del ftp

Cela n'a pas fonctionné lorsque je l'ai essayé (j'ai fini par utiliser le client de ligne de commande de WinSCP à la place ). Sur quelle version de Windows a-t-il été testé?
Peter Mortensen

Pourriez-vous expliquer comment cette ligne fonctionne? Je ne trouve aucune documentation. Je suis en train de le faire fonctionner avec psftp
stallingOne

@stallingOne Considérez le &comme un saut de ligne ... il s'agit en fait de plusieurs commandes. Fondamentalement, il construit un script, ligne par ligne, en utilisant echo, puis dit ftpde l'exécuter. Il nomme également le fichier de script ftp, ce qui le rend déroutant.
Havenard

Mauvais choix de nom de fichier. "ftp" est à la fois le nom de fichier du script qu'il construit et le nom de l'exe. La résolution du chemin ftp -n -v -s:ftpest donc un peu hinky. (Chaque utilisation de "ftp" fait référence à des choses différentes)
Chad Schouggins

2

Notez que vous pouvez demander la syntaxe d'une commande sous DOS en utilisant le /? commutateur. Par exemple:

C: \> ftp /?

Transfère des fichiers vers et depuis un ordinateur exécutant un service de serveur FTP
(parfois appelé démon). Ftp peut être utilisé de manière interactive.

FTP [-v] [-d] [-i] [-n] [-g] [-s: nom_fichier] [-a] [-A] [-x: sendbuffer] [-r: recvbuf
fer] [-b: asyncbuffers] [-w: windowsize] [hôte]

  -v Supprime l'affichage des réponses du serveur distant.
  -n Supprime la connexion automatique lors de la connexion initiale.
  -i Désactive l'invite interactive pendant plusieurs fichiers
                  transferts.
  -d Active le débogage.
  -g Désactive la globalisation du nom de fichier (voir la commande GLOB).
  -s: nom de fichier Spécifie un fichier texte contenant des commandes FTP; le
                  les commandes s'exécuteront automatiquement après le démarrage de FTP.
  -a Utilisez n'importe quelle interface locale lors de la liaison de la connexion de données.
  -Une connexion anonyme.
  -x: send sockbuf Remplace la taille SO_SNDBUF par défaut de 8192.
  -r: recv sockbuf Remplace la taille SO_RCVBUF par défaut de 8192.
  -b: nombre asynchrone Remplace le nombre asynchrone par défaut de 3
  -w: windowsize Remplace la taille de tampon de transfert par défaut de 65535.
  hôte Spécifie le nom d'hôte ou l'adresse IP de la télécommande
                  hôte auquel se connecter.

Remarques:
  - Les commandes mget et mput prennent y / n / q pour yes / no / quit.
  - Utilisez Control-C pour abandonner les commandes.

Dans votre cas, vous souhaiterez utiliser le commutateur -s pour lui fournir un script, y compris les réponses de connexion.

Par exemple:

  1. Créez un fichier de script (c: \ scriptfile.txt) avec le contenu suivant:

    open
    servername_or_ip
    username
    password
    get
    /fullpath/thefile.txt
    c:\fullpath\thefile.txt
    quit
    
  2. exécutez ftp avec le commutateur -s et spécifiez le nom de fichier du script

    C:\>ftp -s:c:\scriptfile.txt
    

Sous Windows XP (oui, oui, je sais), cela se traduit par "Hôte inconnu /?."
Peter Mortensen le
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.