Automatizujte nahrávanie a sťahovanie SFTP pomocou skriptovania WinSCP
Dátum vydania:
Aktualizované:
Technické články > Automatizujte nahrávanie a sťahovanie SFTP pomocou skriptovania WinSCP
Stav 2026 a bezpečné používanie
Záver: Použite WinSCP.com so súborom skriptu, pripnite odtlačok hostiteľského kľúča SSH, citlivé údaje neukladajte do zdrojového kódu ani argumentov procesu, zapnite logovanie a nenulový návratový kód WinSCP spracujte ako zlyhanie úlohy.
Čo sa naučíte
- Ako operácie
open,getaputzapadajú do dávkového pracovného postupu. - Ako overenie hostiteľského kľúča chráni bezobslužnú úlohu pred pripojením k nesprávnemu serveru.
- Ako dosiahnuť opakovateľné prenosy pomocou logov, explicitných ciest a spracovania chýb.
Pre koho je to určené: Správcovia Windowsu, ktorí automatizujú prenos súborov na známy koncový bod SFTP.
Kontext v roku 2026: Pôvodný skript uvedený nižšie obsahuje ukážkové prihlasovacie údaje v otvorenom texte a interaktívne prijíma potvrdenie hostiteľského kľúča. Považujte ho iba za historický učebný materiál: údaje z príkladu nenasadzujte a kontrolu hostiteľského kľúča nevynechávajte. Uprednostnite kľúče SSH alebo schválený trezor tajomstiev a otestujte aj obnovenie po chybe.
Bezpečnostná poznámka: Príkazy a príklady konfigurácie v pôvodnom článku neboli znovu spustené v aktuálnom produkčnom prostredí. Pred ich použitím overte podporované verzie, zálohy, prístupové oprávnenia a postup obnovy v oddelenom testovacom prostredí.
Hlavné oficiálne zdroje
Prehľad
Táto príručka ukazuje, ako vytvoriť nástroj na automatické sťahovanie a nahrávanie súborov pomocou príkazov WinSCP. Príkazy sa vykonávajú z príkazového riadka. WinSCP okrem grafického rozhrania ponúka aj konzolové skriptovanie. Bežne sa používa súbor "WinSCP.exe", na automatizáciu je však určený aj "WinSCP.com". Oba súbory sa štandardne nachádzajú v priečinku "C:\Program Files (x86)\WinSCP". Nasledujúce časti ukazujú historický príklad takéhoto nástroja.
Obsah
1. Čo je príkaz WinSCP?
Skriptovacie príkazy WinSCP vykonávajú z konzoly operácie, ktoré sa bežne spúšťajú v grafickom rozhraní. Vďaka tomu sa dajú zaradiť do bezobslužnej úlohy.
1-1. Podporované operácie
WinSCP dokáže sťahovať a nahrávať súbory, vytvárať priečinky, volať vzdialené príkazy shellu a vykonávať ďalšie operácie.
Medzi často používané príkazy patria:
open: otvorenie relácie;
get: stiahnutie súborov;
put: nahranie súborov;
exit: ukončenie skriptu.
1-2. Obmedzenia
Základné prenosy sú priamočiare, zložité podmienky výberu súborov však môžu vyžadovať ďalšie spracovanie.
Pôvodný príklad napríklad potreboval vybrať súbor podľa dátumu poslednej zmeny.
Pri zložitejšej podmienke možno príkazom 'call' spustiť vzdialený shellový príkaz. Takýto postup musí počítať s operačným systémom servera, oprávneniami a bezpečným escapovaním argumentov.
2. Nástroj na automatické sťahovanie
Nasledujúci historický príklad automaticky sťahuje log uložený na serveri Linux.
2-1. Vytvorenie skriptu
Príklad používa tieto podmienky:
• skript sa spúšťa vo Windows 10;
• cieľový server používa Linux;
• server má IP adresu 192.168.50.10.
Najprv vytvorte súbor bat, ktorý bude vstupným bodom úlohy.
@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%
Všetky riadky okrem posledného sú príkazy dávkového súboru Windows. Ich význam je nasledujúci.
@setlocal enabledelayedexpansion
Tento príkaz zapne oneskorené rozširovanie premenných, aby sa zmeny hodnôt správne prejavili aj v zložených príkazoch.
@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%
Tieto riadky vytvoria z aktuálneho dátumu a času reťazec vo formáte yyyymmddhhmmss a uložia výslednú cestu do premennej FOLDER.
@mkdir %FOLDER%
Príkaz vytvorí priečinok "yyyymmddhhmmss" priamo pod priečinkom dávkového súboru.
@"C:\Program Files (x86)\WinSCP\WinSCP.com" /console /script=%~dp0ftp.txt /parameter %FOLDER%
Tento riadok spustí WinSCP.com, načíta príkazy zo súboru "ftp.txt" v priečinku dávkového súboru a odovzdá mu vytvorenú cestu ako argument.
Tým je spúšťací súbor hotový. Príkazy WinSCP sa zapíšu do súboru "ftp.txt".
option batch on
option transfer binary
open test:testpassword@192.168.50.10
get /var/log/httpd/access_log %1%\
close
exit
Jednotlivé príkazy majú tento význam.
option batch on
V dávkovom režime WinSCP nečaká na interaktívnu odpoveď. Správanie pri existujúcom súbore preto musí byť vopred určené. V tomto príklade sa pre každý prenos vytvorí priečinok "yyyymmddhhmmss", aby sa názvy výstupných súborov neprekrývali.
option transfer binary
Tento príkaz nastaví binárny režim prenosu.
open test:testpassword@192.168.50.10
Reťazec má tvar 'username:password@IP address' a v príklade sa pripája na adresu "192.168.50.10". Prihlasovacie údaje v otvorenom texte používajte iba ako historickú ukážku, nie v produkčnom skripte.
get /var/log/httpd/access_log %1%\
Príkaz uloží '/var/log/httpd/access_log' do priečinka 'yyyymmddhhmmss'. Hodnota '%1%' je argument odovzdaný zo súboru file_get.bat.
Maska "/var/log/httpd/*" umožní stiahnuť všetky zodpovedajúce súbory v danom priečinku.
close
exit
Príkazy zatvoria reláciu a ukončia skript.
Tým je skript na sťahovanie vytvorený.
2-2. Príprava overenia
Pred bezobslužným spustením treba bezpečne overiť hostiteľský kľúč servera.
Pri prvom interaktívnom pripojení WinSCP zobrazí odtlačok hostiteľského kľúča a po prijatí ho uloží do registra Windows. Odtlačok najprv porovnajte s hodnotou získanou dôveryhodným kanálom; slepé potvrdenie "Áno" neposkytuje ochranu pred podvrhnutým serverom. Nasledujúce príkazy zachytávajú pôvodný interaktívny postup.
"C:\Program Files (x86)\WinSCP\WinSCP.com"
open test:testpassword@192.168.50.10 ⇒Zobrazí sa výzva na odpoveď, zadajte "y".
close
exit
exit
Ukážkovú hodnotu 'test:testpassword@192.168.50.10' nahraďte tvarom 'username:password@IP address', no v udržiavanej automatizácii nepoužívajte heslo v otvorenom texte.
Po overení hostiteľského kľúča je príprava historického príkladu dokončená.
2-3. Spustenie
Spustite súbor 'file_get.bat'.
Úspešný prenos vytvorí priečinok "yyyymmddhhmmss" a uloží doň požadované logy. V automatizácii navyše skontrolujte návratový kód a log relácie WinSCP.
3. Nástroj na automatické nahrávanie
Ďalší príklad vytvorí skript na nahrávanie súborov na server Linux. Základná štruktúra zostáva rovnaká ako pri sťahovaní.
3-1. Vytvorenie skriptu
Príklad používa tieto podmienky:
• skript sa spúšťa vo Windows 10;
• cieľový server používa Linux;
• server má IP adresu 192.168.50.10.
Najprv vytvorte súbor bat, ktorý bude vstupným bodom úlohy.
@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%
Opakujúce sa príkazy sú vysvetlené v časti o sťahovaní. Tento dávkový súbor odošle obsah priečinka "put_files", ktorý leží vedľa neho, do vzdialeného priečinka "/tmp/". Samotné príkazy WinSCP sú v súbore "put_ftp.txt".
option batch on
option transfer binary
open test:testpassword@192.168.50.10
put %1% %2%
close
exit
Príkaz "put %1% %2%" nahrá súbory podľa zdrojovej cesty a cieľového priečinka odovzdaných ako argumenty.
3-2. Príprava overenia
Pred spustením overte hostiteľský kľúč rovnako ako pri skripte na sťahovanie. Ak bol kľúč toho istého servera už dôveryhodne overený, krok sa neopakuje.
Na príkazovom riadku vykonajte nasledujúci príkaz.
"C:\Program Files (x86)\WinSCP\WinSCP.com"
open test:testpassword@192.168.50.10 ⇒Zobrazí sa výzva na odpoveď, zadajte "y".
close
exit
exit
Ukážkovú hodnotu 'test:testpassword@192.168.50.10' nahraďte tvarom 'username:password@IP address', no v udržiavanej automatizácii nepoužívajte heslo v otvorenom texte.
Po overení hostiteľského kľúča je príprava dokončená.
3-3. Spustenie
Spustite súbor 'file_put.bat'.
Úspešný prenos odošle súbory z priečinka 'put_files' do vzdialeného priečinka '/tmp/'. Výsledok potvrďte návratovým kódom a logom relácie.
4. Ďalšie užitočné príkazy
Okrem základného sťahovania a nahrávania sa často používajú aj nasledujúce možnosti.
4-1. Prihlásenie pomocou súkromného kľúča
Predchádzajúci historický príklad používal prihlásenie heslom v tomto tvare:
open test:testpassword@192.168.50.10
Príkaz má tvar 'open username:password@IP address'. Pri autentifikácii súkromným kľúčom použite nasledujúci tvar.
open test@192.168.50.10 -privatekey=id_rsa.ppk
'-privatekey=id_rsa.ppk' určuje cestu ku kľúču. Relatívna cesta predpokladá, že súbor id_rsa.ppk leží v pracovnom priečinku skriptu. Ak je kľúč priamo na disku C, použije sa "-privatekey=C:\id_rsa.ppk". Súkromný kľúč chráňte primeranými oprávneniami.
4-2. Vzdialený príkaz shellu
Vzdialený shellový príkaz možno z WinSCP spustiť takto:
option batch on
option transfer binary
open test:testpassword@192.168.50.10
call sh /tmp/test.sh
close
exit
Príkaz 'call sh /tmp/test.sh' spustí skript 'test.sh'. Argument možno odovzdať napríklad v tvare "call sh /tmp/test.sh param1". Hodnoty argumentov validujte, aby neumožnili vloženie ďalšieho shellového príkazu.
5. Zhrnutie
WinSCP.com umožňuje automatizovať prenosy SFTP pomocou dávkového súboru a samostatného príkazového skriptu.
Pri pravidelných prenosoch používajte explicitné cesty, overený hostiteľský kľúč, bezpečne uložené prihlasovacie údaje, log relácie a kontrolu návratového kódu.
Historické heslá a interaktívne potvrdenia z príkladu pred nasadením nahraďte aktuálnym bezpečným postupom podľa dokumentácie WinSCP.
Technické články
Profil
Kontakt
