Automatizzare upload e download SFTP con WinSCP

Immagini 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, gete put le 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

  1. Che cos'è il comando WinSCP?
  2. Strumento di download automatico
  3. Strumento di caricamento automatico
  4. Altri comandi che possono essere utilizzati di frequente
  5. 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.

file_get.bat


@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".

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.

file_put.bat


@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".

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.

■INFORMATION

Articoli


■PROFILE

Profilo


■Contatti

Contatti