Scripting FTP con DriveHQ CommandFTP

Creación de scripts FTP/SFTP con DriveHQ CommandFTP


1. Introducción
2. Sintaxis y parámetros de DriveHQ CommandFTP
3. Creación de archivos de script FTP
3.1 Ejemplo de archivo de script FTP
3.2 Archivo de script FTP con parámetros
4. Automatice la transferencia de archivos con el Programador de tareas de Windows
5. Sincronización automática de carpetas mediante DriveHQ CommandFTP
6. Referencias de comandos FTP
6.1 Comandos FTP estándar
6.2 Comandos FTP avanzados de DriveHQ

1. Introducción

DriveHQ CommandFTP es un potente cliente FTP y SFTP de línea de comandos diseñado para reemplazar el cliente FTP de Windows. Admite scripts FTP y es compatible con cualquier servidor FTP/SFTP estándar.

FTP/SFTP es extremadamente popular para transferir archivos/carpetas grandes a través de Internet. El cliente FTP de línea de comandos se usa ampliamente para la transferencia automatizada de archivos mediante scripts FTP. Mucha gente usa el cliente FTP de línea de comandos integrado en Windows. Sin embargo, este cliente FTP integrado tiene algunas desventajas importantes:

  • 1. Solo admite FTP en modo activo, que suele estar bloqueado por routers, cortafuegos o software de seguridad.
  • 2. Solo admite FTP estándar sin cifrado de datos.
  • 3. No admite la reanudación/reintentación automática.

DriveHQ CommandFTP está diseñado para reemplazar el cliente FTP predeterminado de Windows. Tiene las siguientes ventajas:

  • 1. Admite FTP en modo activo y pasivo.
  • 2. Es compatible con FTP sobre SSL (FTPS y FTPES) y SFTP.
  • 3. Admite la reanudación/reintentación automática.
  • 4. Admite compresión y cifrado de datos.
  • 5. Permite descargar y subir carpetas.
  • 6. Admite la duplicación/sincronización de carpetas.
  • 7. Admite el registro de eventos para auditorías y resolución de problemas.
  • 8. Puede enviar informes por correo electrónico después de una operación.
  • 9. Admite scripts FTP más potentes.

En muchos casos, DriveHQ CommandFTP puede reemplazar directamente al cliente FTP de Windows. Comparten una sintaxis y parámetros de línea de comandos similares. Sin embargo, DriveHQ CommandFTP ofrece muchas más funciones. Puede gestionar tareas complejas de transferencia de archivos con un solo comando. Gracias a su compatibilidad con SFTP, puede escribir un script FTP y ejecutarlo con un servidor SFTP.

2. Sintaxis y parámetros de DriveHQ CommandFTP

Sintaxis


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"]

Parámetros

Parámetro Descripción
FTP_SERVER El nombre del servidor FTP/SFTP o la dirección IP, como ftp.drivehq.com, ftp://ftp.drivehq.com o ftps://ftp.drivehq.com. Es obligatorio a menos que los parámetros incluyan -s:FTP_SCRIPT_FILE
-u:USERNAME Especifica el nombre de usuario de la cuenta FTP/SFTP.
-p:PASSWORD Especifica la contraseña de la cuenta FTP/SFTP.
-k:"PRIVATE_KEY_FILE" Opcional. Especifica la ruta del archivo de clave privada SFTP.
-s:"FTP_SCRIPT_FILE" Opcional. Especifica la ruta del archivo de script FTP. Si se proporciona este parámetro, se ignoran los demás, excepto la opción "-d:LOG_FILE".

Opciones de comando

/xo[:time] Excluir archivos antiguos
/xn[:time] Excluir archivos más recientes
/xf:filenames Excluir archivos, los archivos están separados por comas
/xd:foldernames Excluir carpetas; las carpetas se separan por comas

Opciones de registro

-d:"LogFileName" Especifica la ruta del archivo de registro. Si se utiliza "-d" sin especificar un nombre de archivo de registro, este se mostrará en la ventana de la consola.

3. Creación de archivos de script FTP

Los scripts FTP son muy populares entre los administradores de TI y los integradores de sistemas. Se utilizan ampliamente para la copia de seguridad automatizada de datos y la transferencia de archivos. Los scripts FTP permiten crear un archivo de texto con una lista de comandos y parámetros FTP. Estos comandos se pueden ejecutar secuencialmente en una sola operación. Dado que un archivo de script puede contener numerosos comandos FTP, permite realizar tareas de transferencia de archivos muy complejas.

La ejecución de scripts FTP con el cliente FTP predeterminado de Windows es muy limitada: solo admite FTP estándar, que no es seguro; y solo admite FTP en modo activo, que suele estar bloqueado por routers y firewalls. DriveHQ CommandFTP admite la mayoría de las funciones del cliente FTP de Windows; además, admite muchas funciones que no están disponibles en dicho cliente. DriveHQ CommandFTP es compatible con todos los servidores FTP estándar.

Para escribir un archivo de script FTP, primero puede ejecutar los comandos FTP en modo interactivo. Abra una ventana de comandos y escriba los siguientes comandos, como se muestra en la captura de pantalla a continuación:

Estos comandos suelen incluir: conectarse a un servidor FTP, iniciar sesión en el servidor, listar archivos/carpetas en un directorio, cambiar de directorio, cargar/descargar/eliminar archivos, etc. Si solo usa FTP ocasionalmente, el método anterior funciona perfectamente. Sin embargo, si necesita transferir/hacer copias de seguridad/eliminar archivos repetidamente, por ejemplo, como parte de una tarea de copia de seguridad programada o EDI (Intercambio Electrónico de Datos) con otra empresa, puede crear fácilmente un script que se pueda reutilizar una y otra vez. Junto con el Programador de tareas del sistema operativo, puede automatizar el proceso.

Ejemplo de archivo de script FTP
Un archivo de script FTP tiene los mismos comandos/entradas que se usan en una sesión FTP interactiva. Básicamente, solo necesita crear un archivo de texto en un editor de texto (por ejemplo, el Bloc de notas) e ingresar los comandos y entradas como lo haría en el modo interactivo. CommandFTP de DriveHQ tiene una interfaz muy similar a la del cliente FTP de Windows. Los siguientes comandos se pueden ejecutar tanto en el cliente FTP de Windows como en CommandFTP de DriveHQ. Para usar CommandFTP, escriba cmdftp en lugar de ftp. Por ejemplo::

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:\>


Como puedes ver, estos comandos serán:
- Inicie sesión en un servidor FTP: ftp.drivehq.com;
- Introduzca el nombre de usuario y la contraseña;
- Cambie al directorio local "c:\test";
- Cambie al directorio FTP "/test";
- Elimine el archivo "Orders.xml.bak" (si existe) en el servidor FTP;
- Cambie el nombre del archivo "Orders.xml" (si existe) a "Orders.xml.bak" en el servidor FTP;
- Sube el archivo local "Orders.xml" al servidor FTP;
- Salir

Puedes ejecutarlos en una ventana de comandos para depurar el código antes de guardarlo en un archivo de script. El contenido del script será el siguiente:

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

El script FTP anterior se puede ejecutar diariamente para transferir automáticamente la información de los nuevos pedidos al servidor FTP. Subirá el archivo "Orders.xml" más reciente al servidor FTP; antes de subirlo, renombrará (hará una copia de seguridad) del archivo anterior.
Para ejecutar el script FTP, simplemente ejecute el comando FTP con la opción -s. Con el cliente FTP de Windows, puede usar:
	ftp -s:ftpscript.txt 

Con el cliente DriveHQ CommandFTP, puede utilizar
	cmdftp -s:ftpscript.txt 
    

Scripts FTP con parámetros
El script FTP anterior es estático. Se puede ejecutar repetidamente, pero no es muy flexible. Por ejemplo, si necesita transferir datos para varios clientes, probablemente querrá usar carpetas diferentes. Para reutilizar el mismo script FTP, necesita admitir parámetros adicionales. Hay dos soluciones:
(1) Utilice un archivo de script por lotes para crear dinámicamente el archivo de script FTP. Los scripts por lotes de Windows pueden aceptar parámetros de línea de comandos. Si utiliza un cliente FTP de Windows, esta es la única solución.
(2) DriveHQ CommandFTP admite parámetros adicionales.
Con el primer método, necesitas crear un archivo por lotes, por ejemplo test.bat. Guarda el archivo en la carpeta C:\test. Puedes ejecutar el archivo por lotes escribiendo en:

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

El archivo test.bat será como:

@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


De esta forma, puede pasar los argumentos del archivo por lotes al archivo de script FTP. El mismo script por lotes se puede reutilizar para diferentes empresas, por ejemplo:
    c:\test\test.bat c:\OrdersOfCompanyA ordersOfCompanyA.xml
    c:\test\test.bat c:\OrdersOfCompanyB ordersOfCompanyB.xml
Con DriveHQ CommandFTP, puede ejecutar un script FTP con argumentos adicionales. De esta forma, no necesita crear un archivo de script por lotes. Simplemente puede ejecutar el script FTP con el siguiente comando:
    
cmdftp -s:ftpscript.txt argument1 argument2 argument3 ...
    
El archivo de script FTP debe modificarse ligeramente de la siguiente manera:

# %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

En el archivo de script anterior, el nombre de la carpeta se reemplaza por %1 y el nombre del archivo por %2. Para ejecutar el script FTP, debe proporcionar estos parámetros como argumentos de línea de comandos.
    
cmdftp -s:c:\temp\ftpscript2.txt -%1:test -%2:orders.xml
    
Cuando DriveHQ CommandFTP ejecute el archivo de script, reemplazará %1 con "test" y %2 con "orders.xml".

4. Automatice la transferencia de archivos con el Programador de tareas de Windows

Ya sea que utilice un archivo por lotes o directamente DriveHQ CommandFTP, puede programar la transferencia de archivos en el Programador de tareas de Windows. Puede programar la tarea para que se ejecute diaria, semanal o mensualmente. En la configuración avanzada, incluso puede configurar la tarea para que se ejecute cada pocas horas o minutos. Puede establecer la hora del día en que se iniciará la tarea. Para abrir el Programador de tareas, escriba "Programador de tareas" en el cuadro de búsqueda (vea la captura de pantalla a continuación):

Launch Windows Task Scheduler

Haz clic en Programador de tareas; se abrirá el Programador de tareas de Windows.

Click create basic task in Windows Task Scheduler

Para crear una tarea, haga clic en "Crear tarea básica".

Create basic scheduled task

Introduzca el nombre y la descripción de la tarea y, a continuación, haga clic en Siguiente.

Select task trigger / schedule

Seleccione la frecuencia de ejecución de la tarea. Puede elegir entre diaria, semanal o mensual. Si desea que la tarea se ejecute cada hora, puede configurarlo más adelante en la sección de Configuración avanzada. Haga clic en Siguiente para configurar la acción.

Scheduled Task - Action - select a program

En la página de Acciones, seleccione "Iniciar un programa" y, a continuación, haga clic en Siguiente.

Scheduled Task - Action - Select DriveHQ CommandFTP

Seleccione DriveHQ CommandFTP (cmdftp.exe) como programa. Agregue los parámetros de la línea de comandos en el cuadro de texto "Agregar argumentos". La opción "Iniciar en" es opcional. Puede configurarla en la misma carpeta que el archivo EXE. Haga clic en Siguiente para finalizar la creación de la tarea.

Para acceder a la configuración avanzada, haga clic en "Biblioteca de programación de tareas" y verá una lista de las tareas programadas. Haga doble clic en la tarea "Cargar pedidos" para editar su configuración.

Scheduled Task - Advanced Settings - Edit Task Properties

Tenga en cuenta que, por defecto, la tarea se ejecutará solo cuando el usuario haya iniciado sesión. Puede cambiar esta configuración para que la tarea se ejecute incluso cuando el usuario no haya iniciado sesión.

5. Sincronización automática de carpetas mediante DriveHQ CommandFTP

DriveHQ CommandFTP admite la duplicación de carpetas. Sincronizar una carpeta local con una carpeta FTP es extremadamente fácil. Simplemente use el siguiente comando:

	cmdftp FTP_SERVER -u:nombredeusuario -p:contraseña -m:"CARPETA_LOCAL|CARPETA_FTP"

Mediante el Programador de tareas de Windows, puede ejecutar este comando para sincronizar periódicamente las dos carpetas.

6. Referencias de comandos FTP

Después de iniciar sesión en un servidor FTP, puede enviar comandos FTP al servidor FTP. El cliente FTP de Windows admite los siguientes comandos. Tenga en cuenta que estos comandos no son lo mismo que Comandos FTP definidos en el Protocolo FTP. Cada comando del protocolo FTP generalmente solo maneja un problema simple. Un comando FTP en un cliente FTP de Windows puede usar varios comandos del protocolo FTP.

DriveHQ CommandFTP es similar al cliente FTP de Windows. Admite comandos y sintaxis similares. Además, también admite algunos comandos FTP avanzados específicos de DriveHQ, como comandos para copiar, mover, cargar, descargar o eliminar carpetas.

6.1 Comandos del cliente FTP de Windows

El cliente FTP de Windows (ftp.exe) admite los siguientes comandos FTP:
Comandos FTP Descripción
! Este comando alterna entre el sistema operativo local y el servidor FTP. Cuando inicia sesión en un servidor FTP, por defecto se conecta al servidor FTP. Si desea ejecutar un comando localmente, normalmente puede usar !CMD_NAME, e.g. !dir, !mkdir, etc.
? Muestra la información de ayuda.
append Agregar a un archivo.
ascii Configurar el modo de transferencia ASCII.
bell Activa la opción "Emitir un pitido cuando se complete el comando".
binary Configurar el modo de transferencia binaria.
bye Desconecta la sesión FTP y sal.
cd Cambiar de directorio.
close Finalice la sesión FTP.
delete Elimina un archivo.
debug Activar o desactivar el modo de depuración.
dir Enumera los archivos y subcarpetas de un directorio.
disconnect Desconecta la sesión FTP.
get Obtener archivo del servidor FTP remoto.
glob Activar o desactivar el globbing. Cuando está desactivado, los caracteres comodín en los nombres de archivo (en el poner y conseguir Las órdenes) se toman literalmente.
hash Activar/desactivar la impresión de "#" para cada búfer transferido.
help Muestra la información de ayuda; normalmente se usa help NOMBRE_DEL_COMANDO.
lcd Si se escribe solo, mostrará el directorio de trabajo local actual; de lo contrario, cambiará el directorio de trabajo local.
literal Envía un comando arbitrario al servidor FTP conectado, esperando una respuesta de una sola línea.
ls Lista los archivos en la carpeta FTP.
mdelete Eliminar varios archivos en el servidor FTP.
mdir Enumera los archivos/subcarpetas de varios directorios FTP.
mget Descarga varios archivos del servidor FTP a tu carpeta de trabajo local.
mkdir Crear un nuevo directorio.
mls Enumera el contenido de varios directorios FTP.
mput Sube varios archivos locales al servidor FTP.
open Conéctese a un servidor FTP.
prompt Permite habilitar o deshabilitar la solicitud interactiva de comandos múltiples.
put Sube un archivo al servidor FTP.
pwd Imprimir el directorio de trabajo en el servidor FTP.
quit Desconéctese del servidor FTP y salga.
quote Igual que el comando literal (Enviar comando ftp arbitrario).
recv Descargar/recibir un archivo del servidor FTP.
remotehelp Obtén ayuda del servidor remoto.
rename Cambiar el nombre de un archivo en el servidor FTP.
rmdir Eliminar un directorio en el servidor FTP.
send Enviar un archivo.
status Muestra el estado de las opciones actuales.
trace Activar/desactivar el rastreo de paquetes.
Type Establecer el tipo de transferencia de archivos.
user Enviar información del nuevo usuario (nombre de usuario).
verbose Activa o desactiva el modo detallado.

6.2 Comandos FTP avanzados de DriveHQ

DriveHQ CommandFTP admite algunos comandos FTP más avanzados:

Comandos FTP Descripción
download Descarga una carpeta o un archivo.
Sintaxis: Download [FTP-FILEorFOLDER-PATH] [LOCAL-FILEorFOLDER-PATH]
upload Sube una carpeta o un archivo.
Sintaxis: Upload [LOCAL-FILEorFOLDER-PATH] [FTP-FILEorFOLDER-PATH]
mirror Replicar una carpeta local y una carpeta FTP.
Sintaxis: MIRROR [LOCAL-FOLDER-PATH] [FTP-FOLDER-PATH]
deleteoldfiles En la carpeta especificada, elimine los archivos con una antigüedad superior a x días.
Sintaxis: deleteoldfiles [FTP-PATH] /xo:[time]