Automatisera SFTP-uppladdningar och -nedladdningar med WinSCP
Publicerad:
Uppdaterad:
Tekniska artiklar > Automatisera SFTP-uppladdningar och -nedladdningar med WinSCP
Status 2026 och säker användning
Slutsats: Använd WinSCP.com med en skriptfil, verifiera och ange serverns SSH-värdnyckelfingeravtryck, lagra inte lösenord eller nycklar i skript och aktivera loggning. En returkod som inte är noll ska behandlas som ett misslyckat jobb.
Det här går artikeln igenom
- Hur kommandona
open,getochputanvänds i ett batchflöde. - Hur verifiering av värdnyckeln hindrar ett obevakat jobb från att ansluta till fel server.
- Hur tydliga sökvägar, loggning och felhantering gör överföringarna tillförlitliga.
Målgrupp: Windows-administratörer som automatiserar filöverföringar till en känd SFTP-server.
Läge 2026: Det historiska skriptet nedan innehåller exempeluppgifter i klartext och godkänner värdnyckeln interaktivt. Använd inte dessa uppgifter i drift och kringgå inte verifieringen av värdnyckeln. Använd helst SSH-nycklar eller en godkänd hemlighetshanterare och testa både fel- och återställningsflöden.
Säkerhetsinformation: Kommandona och konfigurationsexemplen i originalartikeln har inte testats på nytt i en aktuell produktionsmiljö. Kontrollera versioner med support, säkerhetskopior, åtkomstkontroller och återställningssteg i en separat testmiljö innan de används.
Viktiga officiella källor
Översikt
WinSCP installeras med både GUI-programmet WinSCP.exe och konsolprogrammet WinSCP.com. WinSCP.com är konsolprogrammet för skriptstyrda överföringar. Det kan köras från kommandotolken och läsa kommandon ur en skriptfil, vilket gör återkommande filöverföringar möjliga att automatisera. I en standardinstallation finns båda filerna i "C:\Program Files (x86)\WinSCP".
Innehållsförteckning
- WinSCP-kommandon
- 1-1. Funktioner
- 1-2. Begränsningar
- Automatiserad nedladdning
- 2-1. Skapa filerna
- 2-2. Förbered anslutningen
- 2-3. Kör verktyget
- Automatiserad uppladdning
- 3-1. Skapa filerna
- 3-2. Förbered anslutningen
- 3-3. Kör verktyget
- Andra användbara kommandon
- 4-1. Nyckelautentisering
- 4-2. Anropa ett fjärrskal
- Sammanfattning
1. WinSCP-kommandon
WinSCP.com kan utföra samma grundläggande filöverföringar som WinSCP:s grafiska gränssnitt, men styrs med kommandon. Kommandona kan skrivas interaktivt eller läsas från en skriptfil.
1-1. Funktioner
WinSCP kan hämta och ladda upp filer, skapa kataloger och anropa kommandon på fjärrservern.
Några vanliga skriptkommandon är:
open: öppnar en anslutning.
get: hämtar filer.
put: laddar upp filer.
exit: avslutar WinSCP.
1-2. Begränsningar
Grundläggande överföringar är enkla att skripta, men avancerad villkorslogik och felhantering blir snabbt svåröverskådliga i en ren WinSCP-skriptfil.
Urval efter exempelvis filernas ändringstid bör uttryckas med dokumenterade filmasker eller hanteras genom WinSCP:s .NET Assembly och ett omgivande PowerShell-skript.
Kommandot "call" kan köra ett kommando på fjärrservern när serverbaserad behandling behövs. Validera alltid argument som skickas till fjärrskalet.
2. Automatiserad nedladdning
Exemplet skapar ett verktyg som automatiskt hämtar en loggfil från en Linux-server.
2-1. Skapa filerna
Det historiska exemplet utgår från följande miljö:
• Körmiljö: Windows 10.
• Målserver: Linux.
• IP-adress: 192.168.50.10.
Skapa först batchfilen som startar överföringen.
@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%
Alla rader utom den sista är vanliga Windows-batchkommandon. Delarna beskrivs nedan.
@setlocal enabledelayedexpansion
Raden aktiverar fördröjd expansion av miljövariabler, så att värden som ändras inne i ett batchblock kan läsas vid körning.
@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%
Raderna skapar ett tidsstämpelbaserat katalognamn och lagrar den fullständiga sökvägen i variabeln FOLDER. Formatet förutsätter de datum- och tidsinställningar som användes i originalmiljön.
@mkdir %FOLDER%
Kommandot skapar målkatalogen under katalogen där batchfilen ligger.
@"C:\Program Files (x86)\WinSCP\WinSCP.com" /console /script=%~dp0ftp.txt /parameter %FOLDER%
Raden startar WinSCP.com, läser kommandona från "ftp.txt" i samma katalog som batchfilen och skickar den nyskapade målkatalogen som argument.
Därefter skapas WinSCP-skriptet "ftp.txt".
option batch on
option transfer binary
open test:testpassword@192.168.50.10
get /var/log/httpd/access_log %1%\
close
exit
Skriptets kommandon beskrivs nedan.
option batch on
Inställningen gör skriptet icke-interaktivt och låter WinSCP hantera frågor enligt batchlägets regler. Exemplet skapar en ny tidsstämplad katalog för varje körning för att undvika namnkonflikter.
option transfer binary
Inställningen väljer binärt överföringsläge.
open test:testpassword@192.168.50.10
Raden ansluter till "192.168.50.10" med användarnamn och lösenord. Uppgifterna är endast historiska exempel; lagra inte riktiga lösenord i en skriptfil.
get /var/log/httpd/access_log %1%\
Kommandot hämtar "/var/log/httpd/access_log" till den tidsstämplade katalogen. "%1%" är argumentet från file_get.bat.
WinSCP:s jokertecken kan användas för flera filer. Sökvägen "/var/log/httpd/*" matchar exempelvis alla filer i loggkatalogen.
close
exit
Kommandona stänger sessionen och avslutar WinSCP.
Nu finns de två filer som krävs för nedladdningsexemplet.
2-2. Förbered anslutningen
SSH-värdnyckelns fingeravtryck måste verifieras innan jobbet körs utan tillsyn.
Det historiska arbetsflödet nedan ansluter interaktivt en gång och sparar den godkända värdnyckeln i Windows-registret. Jämför fingeravtrycket med ett värde från en betrodd kanal innan svaret godkänns. I ny automatisering bör det verifierade fingeravtrycket anges uttryckligen enligt WinSCP:s aktuella dokumentation.
"C:\Program Files (x86)\WinSCP\WinSCP.com"
open test:testpassword@192.168.50.10 ⇒Du uppmanas att svara, ange "y".
close
exit
exit
"test:testpassword@192.168.50.10" illustrerar formatet "användarnamn:lösenord@IP-adress". Använd inte lösenordet från exemplet och lägg inte riktiga inloggningsuppgifter direkt i kommandoraden.
När värdnyckeln har verifierats kan anslutningen testas med ett konto som har minsta nödvändiga behörighet.
2-3. Kör verktyget
Kör "file_get.bat" från en kommandotolk så att utdata och returkod kan granskas.
Körningen har lyckats när den tidsstämplade katalogen har skapats och den förväntade loggfilen finns där. Kontrollera även WinSCP:s returkod och logg innan jobbet markeras som slutfört.
3. Automatiserad uppladdning
Uppladdningsexemplet skickar filer till en Linux-server och har samma grundstruktur som nedladdningsexemplet.
3-1. Skapa filerna
Exemplet använder följande miljö:
• Körmiljö: Windows 10.
• Målserver: Linux.
• IP-adress: 192.168.50.10.
Skapa först batchfilen som startar uppladdningen.
@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%
Batchfilen skickar filerna i katalogen "put_files" bredvid batchfilen till katalogen "/tmp/" på fjärrservern. Själva WinSCP-kommandot finns i "put_ftp.txt".
option batch on
option transfer binary
open test:testpassword@192.168.50.10
put %1% %2%
close
exit
Kommandot "put %1% %2%" laddar upp filerna från källsökvägen i det första argumentet till målkatalogen i det andra argumentet.
3-2. Förbered anslutningen
Verifiera SSH-värdnyckelns fingeravtryck på samma sätt som för nedladdningen. Om samma Windows-konto redan har verifierat samma server och nyckel ska det sparade fingeravtrycket fortfarande jämföras när serverns nyckel ändras.
Det historiska interaktiva exemplet använder följande kommandon i kommandotolken.
"C:\Program Files (x86)\WinSCP\WinSCP.com"
open test:testpassword@192.168.50.10 ⇒Du uppmanas att svara, ange "y".
close
exit
exit
"test:testpassword@192.168.50.10" visar formatet "användarnamn:lösenord@IP-adress". Ange inte riktiga inloggningsuppgifter direkt i skriptet eller kommandoraden.
När värdnyckeln och kontobehörigheterna har verifierats kan uppladdningen provköras i en testkatalog.
3-3. Kör verktyget
Kör "file_put.bat" från en kommandotolk och granska utdata, logg och returkod.
Körningen har lyckats när de förväntade filerna från "put_files" finns i "/tmp/" på servern och innehållet har verifierats.
4. Andra användbara kommandon
Utöver grundläggande nedladdning och uppladdning är nyckelautentisering och fjärrkommandon vanliga i automatiserade flöden.
4-1. Nyckelautentisering
De tidigare exemplen använder lösenordsautentisering enligt följande rad.
open test:testpassword@192.168.50.10
Formatet är "open användarnamn:lösenord@IP-adress". Följande exempel använder i stället en privat nyckel.
open test@192.168.50.10 -privatekey=id_rsa.ppk
Alternativet anger sökvägen till nyckeln. Den relativa sökvägen i exemplet förutsätter att "id_rsa.ppk" finns i samma arbetskatalog som batchfilen. Skydda nyckelfilen med restriktiva filbehörigheter och använd en absolut sökväg när arbetskatalogen kan variera.
4-2. Anropa ett fjärrskal
Kommandot "call" kan köra ett kommando på fjärrservern enligt följande exempel.
option batch on
option transfer binary
open test:testpassword@192.168.50.10
call sh /tmp/test.sh
close
exit
"call sh /tmp/test.sh" kör "test.sh" på fjärrservern. Argument kan läggas till, exempelvis som "call sh /tmp/test.sh param1". Skicka inte osanerad användarindata till ett fjärrskal.
5. Sammanfattning
WinSCP.com och skriptfiler kan automatisera återkommande SFTP-nedladdningar och -uppladdningar som annars utförs i det grafiska gränssnittet.
En driftsäker lösning behöver dessutom uttrycklig verifiering av SSH-värdnyckeln, säker hantering av inloggningsuppgifter, loggning och kontroll av returkoden. De historiska klartextexemplen ska inte kopieras till en produktionsmiljö.
Testa även avbrutna överföringar, saknade filer och återkörning så att automatiseringen får ett förutsägbart felbeteende.
