Trasferimento File tramite Batch

Trasferimento File tramite batch. Connessione server FTP/SFTP con WinSCP

Hai la necessità di spostare scaricare un file su server ftp/sftp? Vediamo insieme come eseguire il trasferimento file tramite batch utilizzando WinSCP.

In questo modo potrai eseguire l’elaborazione con un semplice click oppure schedulare l’attività che verrà eseguita in automatico.

Prima di iniziare dovresti:

Nome host del server come ftp.example.com. In particolare quando ti connetti al server che ospita il tuo sito web, tieni presente che il nome host del server, a cui ti connetti per gestire il sito web potrebbe non essere lo stesso del dominio del tuo sito web. Protocollo supportato dal server (FTP, SFTP, FTPS , ecc.). Nome utente dell’account. Password dell’account.

Comandi da utilizzare

Per automatizzare il funzionamento, è necessario trovare i comandi necessari per implementarlo. Per operazioni semplici è necessario almeno:

  • Apri la sessione usando il comando open.
  • Eseguire l’operazione. Per i caricamenti usa il comando put. Per i download usa il get comando. Per la sincronizzazione utilizzare il comando synchronize. Per altre operazioni, vedere i comandi supportati .
  • Esci dallo script usando il comando exit.

Ad esempio uno script tipico per caricare un file è:

# Connect to SFTP server using a password
open sftp://user:password@example.com/ -hostkey="ssh-rsa 2048 xxxxxxxxxxx...="
# Upload file
put d:\examplefile.txt /home/user/
# Exit WinSCP
exit

Trasferimento File tramite batch: creazione dello script per SFTP

Nel dettaglio per implementare uno script per il trasferimento file tramite batch occorre semplicemente creare un file di testo ed inserire i seguenti comandi:

@echo off

"C:\Program Files (x86)\WinSCP\WinSCP.com" ^
  /log="C:\NomeCartella\batch sftp\WinSCP.log" /ini=nul ^
  /command ^
    "open sftp://Username:Password@server/ -hostkey=""ssh-rsa 2048 xxxxxxxxxxx... ^
    "lcd ""C:\NomeCartella""" ^
    "cd /nomecartella/sottocartella" ^
    "put c*" ^
    "put m*" ^
    "exit"

set WINSCP_RESULT=%ERRORLEVEL%
if %WINSCP_RESULT% equ 0 (
  echo Success
) else (
  echo Error
)

exit /b %WINSCP_RESULT%

Utilizzare l’ opzione /script della riga di comanco per passare lo script all’eseguibile WinSCP . In genere, dovresti anche usare /ini=nul switch per isolare l’esecuzione dello script dalla configurazione della GUI. 

Una volta creato lo scritp salvare il file in formato batch. In questo modo avremo un solo file che al click del mouse avvia il trasferimento file tramite batch.

Ricorda che, puoi anche pianificare il trasferimento file tramite batch mediante Attività pianificate di Windows.

Creazione Script mediante GUI

Puoi fare in modo che WinSCP generi un modello di script per te o anche un file batch completo.

Per generare uno script per un trasferimento di file:

  • Connetti nella GUI .
  • Seleziona i file che desideri trasferire.
  • Utilizzare uno dei comandi di trasferimento file: Carica , Scarica , Carica ed elimina , Scarica ed elimina .
  • Nella finestra di dialogo di conferma del trasferimento , imposta le opzioni di trasferimento (se hai bisogno di impostazioni non predefinite).
  • Utilizzare il comando Impostazioni di trasferimento > Genera codice  .
  • Il Genera codice di trasferimento finestra apparirà con lo script generato o modello di codice.
Trasferimento File tramite Batch - Configurazione mediante GUI
Trasferimento File tramite Batch – Configurazione mediante GUI

Controllo dei risultati dello script

Per controllare i risultati dello script puoi:

  • Controlla il codice di uscita di WinSCP (il codice di uscita è l’unico modo pertinente e affidabile per verificare se lo script è stato completato correttamente). Vedi l’esempio sotto.
  • Salva e controlla il file di registro. Si consiglia il formato di registro XML . Usa il parametro della riga di comando /xmllog.
  • Salva e controlla l’output dello script. Usa il re indirizzamento dell’output .

Una volta scoperto qual è stato il risultato dello script, puoi eseguire qualsiasi azione tu voglia: stampare un messaggio, inviare un’e-mail , ecc.

Guarda un file batch di esempio:

winscp.com  /ini =nul /log =example.log /script =example.txt
 if  %ERRORLEVEL%  equ 0 ( 
  echo Success
   exit /b 0
 )  else  ( 
  echo Error!
   exit /b 1
 )

Altri comandi da utilizzare per script più complessi

Qui trovi alti comandi da utilizzare per eseguire il trasferimento file tramite batch più complessi.


Comandi
Descrizione
callEsegue comandi di shell remota arbitrari
cdCambia la directory di lavoro remota
checksumCalcola il checksum del file remoto
chmodModifica i permessi del file remoto
closeChiude la sessione
cpDuplica il file remoto
echoStampa il messaggio sull’output dello script
exitChiude tutte le sessioni e termina il programma
getScarica il file dalla directory remota alla directory locale
helpVisualizza la guida
keepuptodateAggiorna continuamente i cambiamenti nella directory locale su quella remota
lcdCambia la directory di lavoro locale
llsElenca il contenuto della directory locale
lnCrea un collegamento simbolico remoto
lpwdStampa la directory di lavoro locale
lsElenca il contenuto della directory remota
mkdirCrea una directory remota
mvSposta o rinomina il file remoto
openSi connette al server
optionImposta o mostra il valore delle opzioni dello script
putCarica il file dalla directory locale alla directory remota
pwdStampa la directory di lavoro remota
rmRimuove il file remoto
rmdirRimuove la directory remota
sessionElenca le sessioni connesse o seleziona la sessione attiva
statRecupera gli attributi del file remoto
synchronizeSincronizza la directory remota con quella locale
Trasferimento file tramite batch – Comandi Avanzati

Conclusione

Abbiamo visto come creare uno script per eseguire il trasferimento file tramite batch. Se hai difficolta scrivimi nei commenti.

Autore Bartolomeo

Consulente tecnico con la passione per il web e la tecnologia e tutto quello che le ronza intorno.
Nel tempo libero scrivo articoli per il mio blog su argomenti vari, in particolare su configurazione Windows, Linux e WordPress.

Condividi questo articolo!

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Ho letto la policy privacy e accetto il trattamento dei miei dati personali in conformità al D.Lgs. 196/2003