Cómo descargar archivos del sitio FTP en una línea de comando sin interacción del usuario (Windows)

13

Sé que hay un comando FTP que se puede ejecutar desde la línea de comandos en Windows, y descarga un archivo desde un sitio FTP. Usuario + contraseña se especifican en "ese" cmd de una línea. Estas opciones + contraseña passtrough deben estar en esa línea de comando.

echo open 192.168.1.64 21> ftp.txt
echo anonymous>> ftp.txt
echo [email protected]>> ftp.txt
echo bin >> ftp.txt
echo get test.txt >> ftp.txt
echo bye >> ftp.txt

ftp -s:ftp.txt
soundhax
fuente
¿Necesita descargar a través de FTP o simplemente necesita descargar esos archivos con algún programa? (Rsync puede leer desde un archivo con nombres para sincronizar y desde la línea de comandos. Scp también puede hacerlo desde la línea de comandos. Ambos no son tan antiguos como el texto plano, no_true_security FTP).
Hennes

Respuestas:

13

Pruebe esto: archivos por lotes : descargas FTP desatendidas

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

para descargas anónimas

o:

WGET ftp://user:[email protected]/path/file.ext  

cuando se requiere autenticación.


Como @XavierStuvw señaló a través de ediciones y comentarios, cambiar WGETa minúsculas wgetfuncionaría en Linux.

wget ftp://user:[email protected]/path/file.ext
CalvT
fuente
No veo ningún comando que tenga la opción de cambio de usuario y contraseña en UNA línea allí.
soundhax
-s el interruptor estaba en la oración como recuerdo
soundhax
2
¡Bienvenido a Super User! Si bien esto puede responder teóricamente la pregunta, sería preferible incluir aquí las partes esenciales de la respuesta y proporcionar el enlace para referencia.
Canadiense Luke
1
@CalvT Sin objeciones. El beneficio previsto del comentario es que los usuarios de Linux pueden acceder a esta página después de una búsqueda en Internet y supervisar el sistema al que se aplica. Me pasó a mí, de hecho.
XavierStuvw
1
@CalvT El título es de hecho preciso, pero los motores de búsqueda a menudo visualizan todo el marco de respuesta y es fácil salpicarlo. Por supuesto, esto no debería descartar que el lector sea consciente, pero en este caso fue una coincidencia que las instrucciones de Linux y Windows sean básicamente las mismas. Gracias bien hecho.
XavierStuvw
8

Encontré el camino:

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
soundhax
fuente
Esto no funcionó cuando lo probé (terminé usando el cliente de línea de comandos de WinSCP ). ¿En qué versión de Windows se probó?
Peter Mortensen
¿Podría explicar cómo funciona esta línea? No puedo encontrar ninguna documentación. Estoy tratando de hacerlo funcionar con psftp
stallingOne
@stallingOne Piense en el &como un interruptor de línea ... en realidad son múltiples comandos. Básicamente construye un script, línea por línea, usando echo, y luego le dice ftpque lo ejecute. También está nombrando el archivo de script ftp, lo que lo hace confuso.
Havenard
Mala elección del nombre del archivo. "ftp" es tanto el nombre del archivo del script que está construyendo como el nombre del exe. Entonces, la resolución de la ruta ftp -n -v -s:ftpes un poco extraña. (Cada uso de "ftp" se refiere a cosas diferentes)
Chad Schouggins
2

Tenga en cuenta que puede solicitar la sintaxis de un comando en DOS utilizando /? cambiar. Por ejemplo:

C: \> ftp /?

Transfiere archivos hacia y desde una computadora que ejecuta un servicio de servidor FTP
(a veces llamado demonio). Ftp se puede usar de forma interactiva.

FTP [-v] [-d] [-i] [-n] [-g] [-s: nombre de archivo] [-a] [-A] [-x: sendbuffer] [-r: recvbuf
fer] [-b: asyncbuffers] [-w: windowsize] [host]

  -v Suprime la visualización de las respuestas del servidor remoto.
  -n Suprime el inicio de sesión automático en la conexión inicial.
  -i Desactiva la solicitud interactiva durante varios archivos
                  transferencias.
  -d Habilita la depuración.
  -g Deshabilita el bloqueo de nombre de archivo (ver comando GLOB).
  -s: nombre de archivo Especifica un archivo de texto que contiene comandos FTP; la
                  los comandos se ejecutarán automáticamente después de que se inicie FTP.
  -a Utilice cualquier interfaz local al vincular la conexión de datos.
  -Un inicio de sesión como anónimo.
  -x: enviar sockbuf Invalida el tamaño SO_SNDBUF predeterminado de 8192.
  -r: recv sockbuf Invalida el tamaño predeterminado de SO_RCVBUF de 8192.
  -b: recuento asíncrono Anula el recuento asíncrono predeterminado de 3
  -w: windowsize Anula el tamaño predeterminado del búfer de transferencia de 65535.
  host Especifica el nombre de host o la dirección IP del control remoto
                  host para conectarse.

Notas:
  - Los comandos mget y mput toman y / n / q para yes / no / quit.
  - Use Control-C para abortar comandos.

En su caso, querrá usar el modificador -s para alimentar un script, incluidas las respuestas de inicio de sesión.

Por ejemplo:

  1. Cree un archivo de script (c: \ scriptfile.txt) con el siguiente contenido:

    open
    servername_or_ip
    username
    password
    get
    /fullpath/thefile.txt
    c:\fullpath\thefile.txt
    quit
    
  2. ejecute ftp con el modificador -s y especifique el nombre del archivo del script

    C:\>ftp -s:c:\scriptfile.txt
    
yosh m
fuente
En Windows XP (sí, sí, lo sé), esto da como resultado "¿Host desconocido /?"
Peter Mortensen el