Automatizzare upload e download SFTP con WinSCP
Data di pubblicazione:
Aggiornato:
Articoli > Automatizzare upload e download SFTP con WinSCP
2026 stato e uso sicuro
Conclusione: Uso WinSCP.com con un file di script, pin l'impronta SSH del server, mantenere i segreti fuori da argomenti di origine e di processo, abilitare la registrazione, e fallire il lavoro quando WinSCP restituisce un codice di uscita non zero.
Cosa imparerai
- Come scritto
open,geteputle operazioni si adattano a un flusso di lavoro batch. - Come la verifica chiave host impedisce a un lavoro incustodito di fidarsi del server sbagliato.
- Come rendere i trasferimenti ripetibili con log, percorsi espliciti e gestione degli errori.
Destinatari: Gli amministratori di Windows automatizzano il trasferimento di file a un punto finale SFTP noto.
Nota di aggiornamento (2026): Lo script originale qui sotto contiene le credenziali illustrative in chiaro e accetta un host in modo interattivo. Mantenerlo come materiale di apprendimento storico solo; non dispiegare quei segreti o bypassare i controlli host-key. Preferire le chiavi SSH o un negozio segreto approvato e il comportamento di recupero di prova.
Nota di sicurezza: i comandi e gli esempi di configurazione dell'articolo originale non sono stati rieseguiti in un ambiente di produzione moderno. Prima di applicarli, verifica versioni supportate, backup, controlli di accesso e procedura di rollback in un ambiente di prova isolato.
Fonti primarie ufficiali
Panoramica
Questa guida mostra come automatizzare download e upload SFTP tramite l’interfaccia a riga di comando di WinSCP.
Eseguire i comandi forniti da WinSCP utilizzando il prompt dei comandi. Non sorprende che WinSCP fornisca dei comandi. Normalmente si usa "WinSCP.exe", ma è disponibile anche "WinSCP.com". Non vedrete quasi mai la cartella "C:\Program Files (x86)\WinSCP" nella destinazione del collegamento, poiché di solito lo aprite fondamentalmente dal collegamento, ma se guardate la destinazione del collegamento, anche "WinSCP.com" dovrebbe essere memorizzato lì. È qui che viene creato lo strumento.Indice dei contenuti
- Che cos'è il comando WinSCP?
- 1-1. Cosa potete fare.
- 1-2. Cosa non si può fare.
- Strumento di download automatico
- 2-1. realizzazione
- 2-2. preparazione all'attuazione
- 2-3. implementazione
- Strumento di caricamento automatico
- 3-1. realizzazione
- 3-2. preparazione all'attuazione
- 3-3. implementazione
- Altri comandi che possono essere utilizzati di frequente
- 4-1. autenticazione della chiave
- 4-2. Chiamare la shell
- sintesi
1. Che cos'è il comando WinSCP?
WinSCP.com rende disponibili da riga di comando le principali operazioni dell’interfaccia grafica. Un file di script può quindi eseguire gli stessi trasferimenti senza intervento manuale.
1-1. Cosa potete fare.
È possibile scaricare e caricare file, creare cartelle, richiamare comandi di shell e molte altre cose.
I comandi più comuni sono i seguenti.
open: apre una sessione.
get: scarica un file remoto.
put: carica un file locale.
exit: chiude WinSCP.
1-2. Cosa non si può fare.
Le operazioni di trasferimento semplici sono supportate direttamente. Per selezioni più complesse, come filtrare i file per data di modifica, combinate lo script WinSCP con una logica esplicita sul client Windows o sul server.
Il comando 'call' può invocare un comando remoto se il protocollo e i permessi dell’account lo consentono.
2. Strumento di download automatico
L’esempio scarica automaticamente i log da un server Linux a un computer Windows.
2-1. Creazione
L’esempio usa le condizioni seguenti.
• Windows 10 come ambiente di esecuzione.
• Il server da acquisire è Linux.
• Indirizzo IP 192.168.50.10.
Per prima cosa, creare un file bat come punto di partenza per l'attivazione.
@setlocal enabledelayedexpansion
@set time2=%time: =0%
@set MKDIR_NAME=%date:~0,4%%date:~5,2%%date:~8,2%%time2:~0,2%%time2:~3,2%%time2:~6,2%
@set FOLDER=%~dp0%MKDIR_NAME%
@mkdir %FOLDER%
@"C:\Program Files (x86)\WinSCP\WinSCP.com" /console /script=%~dp0ftp.txt /parameter %FOLDER%
Ad eccezione dell'ultima riga, il resto del processo è un comando di Windows. Contenuto.
@setlocal enabledelayedexpansion
Impostazioni per le variabili d'ambiente ritardate. In breve, questa descrizione impedisce di impostare un valore a una variabile che potrebbe non essere rispecchiato.
@set time2=%time: =0%
@set MKDIR_NAME=%date:~0,4%%date:~5,2%%date:~8,2%%time2:~0,2%%time2:~3,2%%time2:~6,2%
@set FOLDER=%~dp0%MKDIR_NAME%
Il processo di ottenimento di yyyymmddhmmss dall'ora corrente e infine di inserimento nella variabile FOLDER.
@mkdir %FOLDER%
Creare una cartella 'yyyymmddhmmss' direttamente sotto la cartella in cui è stato eseguito il batch.
@"C:\Program Files (x86)\WinSCP\WinSCP.com" /console /script=%~dp0ftp.txt /parameter %FOLDER%
WinSCP.com (comando WinSCP). L'esecuzione esegue i comandi elencati in "ftp.txt" nella stessa cartella in cui è memorizzato il file batch. Passare come argomento il percorso della cartella appena creata.
Questo completa la creazione del file chiamante. Il comando WinSCP è descritto in "ftp.txt".
option batch on
option transfer binary
open test:testpassword@192.168.50.10
get /var/log/httpd/access_log %1%\
close
exit
Contenuto.
option batch on
Per i processi che richiedono un'interrogazione, il sistema presume automaticamente che sia stato selezionato "No" ed esegue automaticamente il processo. Se si include questa opzione, i nomi dei file duplicati verranno sovrascritti automaticamente.
(È possibile creare una cartella "yyyymmddhmmss" e inserirvi i file, in modo che non vi siano nomi di file duplicati.)option transfer binary
L'impostazione prevede il trasferimento dei dati in modalità binaria.
open test:testpassword@192.168.50.10
'username:pass-word@indirizzo IP'. Collegarsi all'indirizzo IP "192.168.50.10".
get /var/log/httpd/access_log %1%\
Memorizzare '/var/log/httpd/access_log' nella cartella 'yyyymmddhhmmss'. ('%1%' è l'argomento passato in file_get.bat)
È possibile utilizzare anche espressioni regolari, per cui se si scrive "/var/log/httpd/*", è possibile recuperare l'intero registro.
close
exit
Si tratta di un processo di disconnessione.
Questo completa la creazione dello strumento.
2-2. preparazione all'attuazione
Prima di automatizzare il trasferimento, verificate e registrate l’impronta della chiave host SSH del server previsto.
Se il server non è mai stato collegato tramite WinSCP, vi verrà chiesto se la connessione è sicura. Se si preme "Sì", viene lasciata una registrazione della pressione di "Sì" in un luogo chiamato area del registro di Windows. In questo modo si evita che il sistema venga controllato una seconda volta. Quando si esegue lo strumento, è necessario farlo in anticipo e salvare le informazioni sul server nell'area del registro per garantire la sicurezza della connessione, quindi eseguire i seguenti comandi nel prompt dei comandi.
"C:\Program Files (x86)\WinSCP\WinSCP.com"
open test:testpassword@192.168.50.10 ⇒Viene richiesta una risposta, inserire "y".
close
exit
exit
'test:testpassword@192.168.50.10' deve essere sostituito da 'username:password@indirizzo IP'.
In questo modo si completano i preparativi preliminari.
2-3. implementazione
Infine, è arrivato il momento di implementarlo. Fare doppio clic su "file_get.bat".
Successo se la cartella "yyyymmddhhmmss" viene creata e i registri vengono memorizzati nella cartella.
3. Strumento di caricamento automatico
Il passo successivo è quello di creare uno strumento per mettere i file su un server Linux. La struttura di base sarà la stessa dello strumento di download.
3-1. realizzazione
Creare uno strumento con le seguenti condizioni.
• Windows 10 come ambiente di esecuzione.
• Il server di destinazione è Linux.
• Indirizzo IP 192.168.50.10.
Per prima cosa, creare un file bat come punto di partenza per l'attivazione.
@setlocal enabledelayedexpansion
@set FOLDER_NAME="put_files\*"
@set FOLDER=%~dp0%FOLDER_NAME%
@set PUT_FOLDER="/tmp/"
@"C:\Program Files (x86)\WinSCP\WinSCP.com" /console /script=%~dp0put_ftp.txt /parameter %FOLDER% %PUT_FOLDER%
Come è stato spiegato nello strumento di download automatico, si omette una piccola spiegazione, ma il processo consiste nel memorizzare i file nella cartella 'put_files' nella stessa cartella in cui viene eseguito il file batch in '/tmp/'. Il processo di memorizzazione effettivo è descritto in "put_ftp.txt".
option batch on
option transfer binary
open test:testpassword@192.168.50.10
put %1% %2%
close
exit
Il comando "put %1%\ %2%" carica i file in base al "file sorgente" e alla "cartella di destinazione" passati come argomenti, anche se viene omessa una piccola spiegazione perché questo viene spiegato anche nello strumento di download automatico.
3-2. preparazione all'attuazione
Come per lo strumento di download automatico, le impronte digitali vengono controllate in anticipo prima dell'esecuzione. (Non è necessario se lo strumento di download automatico è stato eseguito una volta.)
Eseguire il seguente comando al prompt dei comandi.
"C:\Program Files (x86)\WinSCP\WinSCP.com"
open test:testpassword@192.168.50.10 ⇒Viene richiesta una risposta, inserire "y".
close
exit
exit
'test:testpassword@192.168.50.10' deve essere sostituito da 'username:password@indirizzo IP'.
In questo modo si completano i preparativi preliminari.
3-3. implementazione
Infine, è arrivato il momento di implementarlo. Fare doppio clic su "file_put.bat".
Ha successo se i file memorizzati in 'put_files' vengono trasferiti nella cartella '/tmp/'.
4. Altri comandi che possono essere utilizzati di frequente
Abbiamo introdotto le operazioni di base di download e upload, ma vorremmo descrivere anche altri comandi che possono essere usati frequentemente.
4-1. autenticazione della chiave
Prima si è effettuato l'accesso con l'autenticazione tramite password secondo la seguente descrizione.
open test:testpassword@192.168.50.10
'apri nome utente:password@indirizzo IP'. Per l'autenticazione delle chiavi, vale quanto segue.
open test@192.168.50.10 -privatekey=id_rsa.ppk
Il parametro "-privatekey=id_rsa.ppk" è il percorso della chiave. Poiché è elencato come percorso relativo, si presume che la chiave (id_rsa.ppk) si trovi anche nella cartella in cui si trova il file eseguibile (file bat). Ad esempio, se la chiave si trova direttamente nell'unità C, scrivere "-privatekey=C:\id_rsa.ppk".
4-2. Chiamare la shell
Per richiamare la shell tramite il comando WinSCP, scrivere come segue.
option batch on
option transfer binary
open test:testpassword@192.168.50.10
call sh /tmp/test.sh
close
exit
test.sh" viene eseguito da "call sh /tmp/test.sh". È anche possibile passare degli argomenti. Quando si passano gli argomenti, scriverli come "call sh /tmp/test.sh param1".
5. sintesi
Il comando WinSCP è stato descritto.
Se normalmente si utilizza la GUI di WinSCP per registrare e caricare i file su base giornaliera, è possibile automatizzare questa operazione creando gli strumenti descritti in questo articolo. Può essere un compito di poco conto, ma può portare via molto tempo, a meno che non lo si faccia tutti i giorni. Vi incoraggiamo a creare strumenti per migliorare l'efficienza.
