Scripting FTP con DriveHQ CommandFTP

Scripting FTP/SFTP con DriveHQ CommandFTP


1. Introduzione
2. Sintassi e parametri del comando FTP di DriveHQ
3. Creazione di file di script FTP
3.1 Esempio di file di script FTP
3.2 File di script FTP con parametri
4. Automatizza il trasferimento dei file con l'Utilità di pianificazione di Windows
5. Sincronizzazione automatica delle cartelle tramite DriveHQ CommandFTP
6. Riferimenti ai comandi FTP
6.1 Comandi FTP standard
6.2 Comandi FTP avanzati di DriveHQ

1. Introduzione

DriveHQ CommandFTP è un potente client FTP e SFTP da riga di comando progettato per sostituire il client FTP di Windows. Supporta gli script FTP ed è compatibile con qualsiasi server FTP/SFTP standard.

FTP/SFTP è estremamente diffuso per il trasferimento di file/cartelle di grandi dimensioni su Internet. Il client FTP da riga di comando è ampiamente utilizzato per il trasferimento automatizzato di file tramite script FTP. Molti utenti utilizzano il client FTP integrato di Windows. Tuttavia, il client FTP integrato presenta alcuni importanti svantaggi:

  • 1. Supporta solo la modalità attiva FTP, che viene spesso bloccata da router, firewall o software di sicurezza.
  • 2. Supporta solo il protocollo FTP standard, senza crittografia dei dati.
  • 3. Non supporta la ripresa/il tentativo automatico.

DriveHQ CommandFTP è progettato per sostituire il client FTP predefinito di Windows. Presenta i seguenti vantaggi:

  • 1. Supporta sia la modalità FTP attiva che quella passiva.
  • 2. Supporta FTP su SSL (FTPS e FTPES) e SFTP.
  • 3. Supporta la ripresa/il tentativo automatico.
  • 4. Supporta la compressione e la crittografia dei dati.
  • 5. Consente il download e il caricamento di cartelle.
  • 6. Supporta la sincronizzazione/il mirroring delle cartelle.
  • 7. Supporta la registrazione degli eventi per scopi di verifica e risoluzione dei problemi.
  • 8. Può inviare report via e-mail dopo un'operazione.
  • 9. Supporta script FTP più potenti.

In molti casi, DriveHQ CommandFTP può sostituire direttamente il client FTP di Windows. Condividono una sintassi e parametri da riga di comando simili. Tuttavia, DriveHQ CommandFTP offre molte più funzionalità. È in grado di gestire complesse operazioni di trasferimento file con un solo comando. Grazie al supporto per SFTP, è possibile scrivere uno script FTP ed eseguirlo tramite un server SFTP.

2. Sintassi e parametri del comando FTP di DriveHQ

Sintassi


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

Parametri

Parametro Descrizione
FTP_SERVER Il nome del server FTP/SFTP o l'indirizzo IP, ad esempio ftp.drivehq.com, ftp://ftp.drivehq.com o ftps://ftp.drivehq.com. È obbligatorio a meno che i parametri non includano -s:FTP_SCRIPT_FILE
-u:USERNAME Specifica il nome utente dell'account FTP/SFTP.
-p:PASSWORD Specifica la password dell'account FTP/SFTP.
-k:"PRIVATE_KEY_FILE" Opzionale. Specifica il percorso del file della chiave privata SFTP.
-s:"FTP_SCRIPT_FILE" Opzionale. Specifica il percorso del file dello script FTP. Se questo parametro viene fornito, gli altri parametri vengono ignorati, ad eccezione dell'opzione "-d:LOG_FILE".

Opzioni di comando

/xo[:time] Escludi i file vecchi
/xn[:time] Escludi i file più recenti
/xf:filenames Escludi i file, i file sono separati dalla virgola
/xd:foldernames Escludi le cartelle, le cartelle sono separate da virgola

Opzioni di registrazione

-d:"LogFileName" Specifica il percorso del file di log. Se si utilizza "-d" senza specificare LogFileName, il log verrà visualizzato nella finestra della console.

3. Creazione di file di script FTP

Gli script FTP sono molto diffusi tra gli amministratori IT e gli integratori di sistemi. Sono ampiamente utilizzati per il backup automatico dei dati e il trasferimento di file. Gli script FTP consentono di creare un file di testo contenente un elenco di comandi FTP e relativi input. È quindi possibile eseguire questi comandi in sequenza in un'unica operazione. Poiché un file di script può contenere numerosi comandi FTP, è in grado di gestire trasferimenti di file molto complessi.

Lo scripting FTP con il client FTP predefinito di Windows è molto limitato: supporta solo FTP standard, che non è sicuro, e solo FTP Active Model, che viene spesso bloccato da router/firewall. DriveHQ CommandFTP supporta la maggior parte delle funzionalità del client FTP di Windows; inoltre, supporta molte funzionalità non disponibili nel client FTP di Windows. DriveHQ CommandFTP è compatibile con tutti i server FTP standard.

Per scrivere un file di script FTP, è possibile eseguire prima i comandi FTP in modalità interattiva. Aprire una finestra del prompt dei comandi e digitare i seguenti comandi, come mostrato nello screenshot sottostante:

Questi comandi in genere includono: connessione a un server FTP, accesso al server, elenco di file/cartelle in una directory, cambio di directory corrente, caricamento/scaricamento/eliminazione di file e così via. Se si utilizza FTP solo occasionalmente, il metodo sopra descritto è più che sufficiente. Tuttavia, se è necessario trasferire/eseguire il backup/eliminare file ripetutamente, ad esempio nell'ambito di un'attività di backup pianificata o di EDI (Electronic Data Interchange) con un'altra azienda, è possibile creare facilmente uno script riutilizzabile. In combinazione con l'Utilità di pianificazione del sistema operativo, è possibile automatizzare il processo aziendale.

Esempio di file di script FTP
Un file di script FTP ha gli stessi comandi/input utilizzati in una sessione FTP interattiva. In pratica, è sufficiente creare un file di testo in un editor di testo (ad esempio Blocco note) e digitare i comandi e gli input come si farebbe in modalità interattiva. CommandFTP di DriveHQ ha un'interfaccia molto simile al client FTP di Windows. I seguenti comandi possono essere eseguiti sia nel client FTP di Windows che nel client CommandFTP di DriveHQ. Per utilizzare CommandFTP, digitare cmdftp invece di ftp. Ad esempio:

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


Come puoi vedere, questi comandi saranno:
- Accedi a un server FTP: ftp.drivehq.com;
- Inserisci nome utente e password;
- Passare alla directory locale "c:\test";
- Passare alla directory FTP "/test";
- Elimina il file "Orders.xml.bak" (se presente) sul server FTP;
- Rinominare il file "Orders.xml" (se esiste) in "Orders.xml.bak" sul server FTP;
- Carica il file locale "Orders.xml" sul server FTP;
- Esci

È possibile eseguirli in una finestra di comando per eseguire il debug del codice prima di salvarlo in un file di script. Il contenuto dello script sarà il seguente:

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

Lo script FTP sopra riportato può essere eseguito quotidianamente per trasferire automaticamente le informazioni relative ai nuovi ordini al server FTP. Caricherà il file "Orders.xml" più recente sul server FTP; prima di caricare il file, rinominerà (creerà una copia di backup) del file precedente.
Per eseguire lo script FTP, è sufficiente eseguire il comando FTP con l'opzione -s. Con il client FTP di Windows, è possibile utilizzare:
	ftp -s:ftpscript.txt 

Con il client DriveHQ CommandFTP è possibile utilizzare
	cmdftp -s:ftpscript.txt 
    

Script FTP con parametri
Lo script FTP sopra riportato è statico. Può essere eseguito ripetutamente, ma non è molto flessibile. Ad esempio, se è necessario trasferire dati per più client, probabilmente si desidera utilizzare cartelle diverse. Per riutilizzare lo stesso script FTP, è necessario che supporti parametri aggiuntivi. Esistono due soluzioni:
(1) Utilizzare un file di script batch per creare dinamicamente il file di script FTP. Gli script batch di Windows possono accettare parametri da riga di comando. Se si utilizza un client FTP di Windows, questa è l'unica soluzione.
(2) DriveHQ CommandFTP supporta parametri aggiuntivi.
Con il primo metodo, è necessario creare un file batch, ad esempio test.bat. Salvare il file nella cartella C:\test. È possibile eseguire il file batch digitando in:

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

Il file test.bat sarà simile a:

@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


In questo modo, è possibile passare gli argomenti al file batch nel file di script FTP. Lo stesso script batch può essere riutilizzato per diverse aziende, ad esempio:
    c:\test\test.bat c:\OrdersOfCompanyA ordersOfCompanyA.xml
    c:\test\test.bat c:\OrdersOfCompanyB ordersOfCompanyB.xml
Con DriveHQ CommandFTP, è possibile eseguire uno script FTP con argomenti aggiuntivi. In questo modo, non è necessario creare un file di script batch. È sufficiente eseguire lo script FTP con il seguente comando:
    
cmdftp -s:ftpscript.txt argument1 argument2 argument3 ...
    
Il file dello script FTP deve essere leggermente modificato come segue:

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

Nel file di script sopra riportato, il nome della cartella viene sostituito con %1 e il nome del file con %2. Per eseguire lo script FTP, è necessario fornire questi parametri come argomenti della riga di comando.
    
cmdftp -s:c:\temp\ftpscript2.txt -%1:test -%2:orders.xml
    
Quando DriveHQ CommandFTP esegue il file di script, sostituirà %1 con "test" e %2 con "orders.xml".

4. Automatizza il trasferimento dei file con l'Utilità di pianificazione di Windows

Sia che utilizzi un file batch, sia che usi direttamente DriveHQ CommandFTP, puoi pianificare il trasferimento dei file tramite l'Utilità di pianificazione di Windows. Puoi programmare l'esecuzione dell'attività su base giornaliera, settimanale o mensile. Nelle impostazioni avanzate, puoi persino impostare l'esecuzione dell'attività ogni poche ore o minuti. Puoi anche impostare l'ora di avvio dell'attività. Per avviare l'Utilità di pianificazione, digita "Utilità di pianificazione" nella casella di ricerca (vedi la schermata qui sotto):

Launch Windows Task Scheduler

Fai clic su Utilità di pianificazione per avviare l'Utilità di pianificazione di Windows.

Click create basic task in Windows Task Scheduler

Per creare un'attività, fai clic su "Crea attività di base".

Create basic scheduled task

Inserisci il nome e la descrizione dell'attività, quindi fai clic su Avanti.

Select task trigger / schedule

Seleziona la pianificazione dell'attività. Puoi scegliere tra giornaliera, settimanale e mensile. Se desideri eseguire l'attività ogni ora, puoi farlo in seguito nelle Impostazioni avanzate. Fai clic su Avanti per impostare l'azione.

Scheduled Task - Action - select a program

Nella pagina Azioni, selezionare "Avvia un programma", quindi fare clic su Avanti.

Scheduled Task - Action - Select DriveHQ CommandFTP

Seleziona DriveHQ CommandFTP (cmdftp.exe) come programma. Aggiungi i parametri della riga di comando nella casella di testo "Aggiungi argomenti". Il campo "Avvia in" è facoltativo. Puoi impostarlo sulla stessa cartella del file EXE. Fai clic su Avanti per completare la creazione dell'attività.

Per accedere alle Impostazioni avanzate, fai clic su "Libreria pianificazione attività"; qui potrai visualizzare un elenco delle attività pianificate. Fai doppio clic sull'attività "Carica ordini" e potrai modificarne le impostazioni.

Scheduled Task - Advanced Settings - Edit Task Properties

Nota: per impostazione predefinita, l'attività verrà eseguita solo quando l'utente è connesso. Puoi modificare questa impostazione per eseguire l'attività anche quando l'utente non è connesso.

5. Sincronizzazione automatica delle cartelle tramite DriveHQ CommandFTP

DriveHQ CommandFTP supporta il mirroring delle cartelle. Sincronizzare una cartella locale con una cartella FTP è estremamente semplice. Basta usare il seguente comando:

	cmdftp FTP_SERVER -u:nomeutente -p:password -m:"CARTELLA_LOCALE|CARTELLA_FTP"

Tramite l'Utilità di pianificazione di Windows, è possibile eseguire questo comando per sincronizzare periodicamente le due cartelle.

6. Riferimenti ai comandi FTP

Dopo aver effettuato l'accesso a un server FTP, è possibile inviare comandi FTP al server FTP. Il client FTP di Windows supporta i seguenti comandi. Si prega di notare che questi comandi non sono equivalenti ad Comandi FTP definiti nel protocollo FTP. In genere, ogni comando del protocollo FTP gestisce un solo problema semplice. Un comando FTP in un client FTP di Windows può utilizzare più comandi del protocollo FTP.

DriveHQ CommandFTP è simile al client FTP di Windows. Supporta comandi e sintassi analoghi. Inoltre, supporta anche alcuni comandi FTP avanzati specifici di DriveHQ, come ad esempio i comandi per copiare, spostare, caricare, scaricare o eliminare cartelle.

6.1 Comandi del client FTP di Windows

Il client FTP di Windows (ftp.exe) supporta i seguenti comandi FTP:
Comandi FTP Descrizione
! Questo comando alterna tra il sistema operativo locale e il server FTP. Quando accedi a un server FTP, viene utilizzato per impostazione predefinita il server FTP. Se vuoi eseguire un comando localmente, di solito puoi usare !CMD_NAME, e.g. !dir, !mkdir, ecc.
? Visualizza le informazioni della Guida.
append Aggiungi a un file.
ascii Imposta la modalità di trasferimento ASCII.
bell Attiva "Segnale acustico al completamento del comando".
binary Imposta la modalità di trasferimento binario.
bye Disconnetti la sessione FTP ed esci.
cd Cambia directory.
close Termina la sessione FTP.
delete Elimina un file.
debug Attiva o disattiva la modalità di debug.
dir Elenca i file e le sottocartelle presenti in una directory.
disconnect Disconnetti la sessione FTP.
get Scarica il file dal server FTP remoto.
glob Attiva o disattiva la formattazione jolly. Quando è disattivata, i caratteri jolly nei nomi dei file (nel Mettere E Ottenere i comandi vengono presi alla lettera.
hash Attiva/disattiva la stampa del simbolo "#" per ogni buffer trasferito.
help Visualizza le informazioni di aiuto; in genere si usa help NOME_COMANDO.
lcd Se digitato da solo, visualizza la directory di lavoro locale corrente; altrimenti, cambia la directory di lavoro locale.
literal Invia un comando arbitrario al server FTP connesso, prevedendo una risposta di una sola riga.
ls Elenca i file presenti nella cartella FTP.
mdelete Eliminare più file sul server FTP.
mdir Elenca i file/sottocartelle di più directory FTP.
mget Scarica più file dal server FTP nella tua cartella di lavoro locale.
mkdir Crea una nuova directory.
mls Elenca il contenuto di più directory FTP.
mput Carica più file locali sul server FTP.
open Connettiti a un server FTP.
prompt Consente o disabilita la visualizzazione interattiva dei comandi multipli.
put Carica un file sul server FTP.
pwd Stampa la directory di lavoro sul server FTP.
quit Disconnettiti dal server FTP ed esci.
quote È lo stesso del comando letterale (Invia un comando ftp arbitrario).
recv Scaricare/ricevere un file dal server FTP.
remotehelp Richiedi assistenza al server remoto.
rename Rinominare un file sul server FTP.
rmdir Rimuovere una directory dal server FTP.
send Invia un file.
status Mostra lo stato delle opzioni correnti.
trace Attiva/disattiva la tracciatura dei pacchetti.
Type Imposta il tipo di trasferimento file.
user Invia le informazioni del nuovo utente (nome utente).
verbose Attiva o disattiva la modalità dettagliata.

6.2 Comandi FTP avanzati di DriveHQ

DriveHQ CommandFTP supporta alcuni comandi FTP più avanzati:

Comandi FTP Descrizione
download Scarica una cartella o un file.
Sintassi: Download [FTP-FILEorFOLDER-PATH] [LOCAL-FILEorFOLDER-PATH]
upload Carica una cartella o un file.
Sintassi: Upload [LOCAL-FILEorFOLDER-PATH] [FTP-FILEorFOLDER-PATH]
mirror Replicare una cartella locale e una cartella FTP.
Sintassi: MIRROR [LOCAL-FOLDER-PATH] [FTP-FOLDER-PATH]
deleteoldfiles Nella cartella specificata, elimina i file più vecchi di x giorni.
Sintassi: deleteoldfiles [FTP-PATH] /xo:[time]