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:
- Avere WinSCP installato ;
- Conoscere i parametri di accesso al server FTP/SFTP:
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.
Sommario
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.
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 |
call | Esegue comandi di shell remota arbitrari |
cd | Cambia la directory di lavoro remota |
checksum | Calcola il checksum del file remoto |
chmod | Modifica i permessi del file remoto |
close | Chiude la sessione |
cp | Duplica il file remoto |
echo | Stampa il messaggio sull’output dello script |
exit | Chiude tutte le sessioni e termina il programma |
get | Scarica il file dalla directory remota alla directory locale |
help | Visualizza la guida |
keepuptodate | Aggiorna continuamente i cambiamenti nella directory locale su quella remota |
lcd | Cambia la directory di lavoro locale |
lls | Elenca il contenuto della directory locale |
ln | Crea un collegamento simbolico remoto |
lpwd | Stampa la directory di lavoro locale |
ls | Elenca il contenuto della directory remota |
mkdir | Crea una directory remota |
mv | Sposta o rinomina il file remoto |
open | Si connette al server |
option | Imposta o mostra il valore delle opzioni dello script |
put | Carica il file dalla directory locale alla directory remota |
pwd | Stampa la directory di lavoro remota |
rm | Rimuove il file remoto |
rmdir | Rimuove la directory remota |
session | Elenca le sessioni connesse o seleziona la sessione attiva |
stat | Recupera gli attributi del file remoto |
synchronize | Sincronizza la directory remota con quella locale |
Conclusione
Abbiamo visto come creare uno script per eseguire il trasferimento file tramite batch. Se hai difficolta scrivimi nei commenti.