SFTP įkėlimo ir atsisiuntimo automatizavimas su WinSCP skriptais
Paskelbimo data:
Atnaujinta:
Techniniai straipsniai > SFTP įkėlimo ir atsisiuntimo automatizavimas su WinSCP skriptais
2026 m. būsena ir saugus naudojimas
Išvada: naudokite WinSCP.com su scenarijaus failu, patikrinkite SSH serverio rakto kontrolinį atspaudą, nelaikykite prisijungimo duomenų kode, saugiai apdorokite argumentus ir rašykite žurnalą. Jei WinSCP grąžina nenulinį išėjimo kodą, automatizuota užduotis turi būti laikoma nepavykusia.
Ką išmoksite
- Kaip scenarijaus operacijos
open,getirputsujungiamos į paketinę darbo eigą. - Kaip serverio SSH rakto patvirtinimas neleidžia neprižiūrėtam darbui pasitikėti netinkamu serveriu.
- Kaip užtikrinti pakartojamus perkėlimus naudojant žurnalus, aiškius kelius ir klaidų tvarkymą.
Kam tai skirta: „Windows“ administratoriams, automatizuojantiems failų perkėlimą į žinomą SFTP galutinį tašką.
2026 m. kontekstas: originaliame scenarijuje demonstraciniai prisijungimo duomenys įrašyti atviru tekstu, o SSH serverio raktas priimamas interaktyviai. Šį pavyzdį laikykite tik istorine mokomąja medžiaga: gamyboje naudokite SSH raktus arba patikimą paslapčių saugyklą, aiškiai nurodykite patikrintą serverio rakto atspaudą ir išbandykite klaidų grąžinimą.
Saugos pastaba: pradiniame straipsnyje pateiktos komandos ir konfigūracijos pavyzdžiai nebuvo pakartotinai vykdomi dabartinėje gamybos aplinkoje. Prieš taikydami, patikrinkite palaikomas versijas, atsargines kopijas, prieigos valdiklius ir atšaukimo veiksmus atskiroje bandymo aplinkoje.
Pagrindiniai oficialūs šaltiniai
Apžvalga
Šiame straipsnyje kuriami paprasti automatinio atsisiuntimo ir įkėlimo scenarijai. Grafinę sąsają paleidžia „WinSCP.exe“, o komandų eilutės scenarijus – tame pačiame diegimo kataloge esantis „WinSCP.com“. Toliau parodyta, kaip jį iškviesti iš Windows paketinio failo.
Turinys
- Kas yra WinSCP komanda?
- 1-1. Galimos operacijos
- 1-2. Sudėtingesnės sąlygos
- Automatinis atsisiuntimo įrankis
- 2-1. Scenarijaus sukūrimas
- 2-2. Pasirengimas vykdyti
- 2-3. Vykdymas
- Automatinis įkėlimo įrankis
- 3-1. Scenarijaus sukūrimas
- 3-2. Pasirengimas vykdyti
- 3-3. Vykdymas
- Kitos dažnai naudojamos komandos
- Santrauka
1. Kas yra WinSCP komanda?
WinSCP scenarijaus komandos leidžia komandų eilutėje automatizuoti operacijas, kurios įprastai atliekamos grafinėje sąsajoje.
1-1. Galimos operacijos
Galima atsisiųsti ir įkelti failus, kurti katalogus, iškviesti nuotolinio apvalkalo komandas ir atlikti kitas operacijas.
Dažniausiai naudojamos šios komandos:
open: atveria seansą.
get: atsisiunčia failus.
put: įkelia failus.
exit: baigia WinSCP scenarijų.
1-2. Sudėtingesnės sąlygos
Pagrindines failų perkėlimo operacijas aprašyti paprasta, tačiau sudėtingesnė atranka gali pareikalauti papildomos logikos.
Pavyzdžiui, vien scenarijaus komandomis ne visada patogu atrinkti failus pagal konkrečią pakeitimo datą.
Tokiais atvejais WinSCP komanda „call“ gali iškviesti nuotolinio serverio apvalkalą. Prieš naudodami šį būdą įvertinkite įvedamų duomenų tikrinimą, teises ir komandų įterpimo riziką.
2. Automatinis atsisiuntimo įrankis
Toliau kuriamas pavyzdinis įrankis, automatiškai atsisiunčiantis žurnalo failą iš Linux serverio.
2-1. Scenarijaus sukūrimas
Pavyzdžio sąlygos:
• vykdymo aplinka – Windows 10;
• šaltinio serveris – Linux;
• IP adresas – 192.168.50.10.
Pirmiausia sukurkite paleidimo BAT failą.
@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%
Visos eilutės, išskyrus paskutinę, yra Windows paketinio failo komandos. Toliau paaiškinta jų paskirtis.
@setlocal enabledelayedexpansion
Įjungiamas uždelstas aplinkos kintamųjų išplėtimas, kad vykdymo metu pakeistos reikšmės būtų naudojamos tame pačiame komandų bloke.
@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%
Iš dabartinės datos ir laiko sudaromas vardas yyyymmddhhmmss, o visas katalogo kelias įrašomas į kintamąjį FOLDER.
@mkdir %FOLDER%
Šalia paketinio failo sukuriamas katalogas vardu yyyymmddhhmmss.
@"C:\Program Files (x86)\WinSCP\WinSCP.com" /console /script=%~dp0ftp.txt /parameter %FOLDER%
WinSCP.com įvykdo tame pačiame kataloge esančio ftp.txt komandas ir perduoda ką tik sukurto katalogo kelią kaip argumentą.
Tai visas paleidimo failas. Toliau pateikiamas WinSCP scenarijus ftp.txt.
option batch on
option transfer binary
open test:testpassword@192.168.50.10
get /var/log/httpd/access_log %1%\
close
exit
Scenarijaus eilučių paskirtis:
option batch on
Neprižiūrimo režimo užklausos apdorojamos pagal WinSCP paketinio režimo taisykles. Kad failai nebūtų netyčia perrašyti, šiame pavyzdyje kiekvienam vykdymui sukuriamas atskiras yyyymmddhhmmss katalogas.
option transfer binary
Nustatoma, kad duomenys būtų perduodami dvejetainiu režimu.
open test:testpassword@192.168.50.10
Eilutė atveria seansą su serveriu 192.168.50.10. Pavyzdiniai atviro teksto prisijungimo duomenys netinka gamybinei automatizacijai.
get /var/log/httpd/access_log %1%\
Failas „/var/log/httpd/access_log“ atsisiunčiamas į yyyymmddhhmmss katalogą. „%1%“ yra iš file_get.bat perduotas argumentas.
WinSCP failų kaukė „/var/log/httpd/*“ leistų atsisiųsti visus to katalogo failus; tai nėra reguliarioji išraiška.
close
exit
Komandos užveria seansą ir baigia WinSCP scenarijų.
Atsisiuntimo scenarijus parengtas.
2-2. Pasirengimas vykdyti
Prieš automatizuodami ryšį patikrinkite SSH serverio rakto kontrolinį atspaudą patikimu, nepriklausomu kanalu.
Toliau pateiktas istorinis pavyzdys pirmą kartą prisijungia interaktyviai ir priimtą raktą išsaugo Windows registre. Vien paspausti „Taip“ nepakanka serverio tapatybei patvirtinti. Gamybiniame scenarijuje nurodykite iš anksto patikrintą rakto atspaudą pagal dabartinę WinSCP dokumentaciją.
"C:\Program Files (x86)\WinSCP\WinSCP.com"
open test:testpassword@192.168.50.10 ⇒Bus paprašyta atsakyti, įveskite "y".
close
exit
exit
Pavyzdinė reikšmė „test:testpassword@192.168.50.10“ iliustruoja sintaksę. Tikrų prisijungimo duomenų paketiniame ar scenarijaus faile nelaikykite.
Patikrinus serverio raktą ir saugiai parengus prisijungimo duomenis galima išbandyti perkėlimą.
2-3. Vykdymas
Paleiskite „file_get.bat“ bandomojoje aplinkoje.
Patikrinkite ne tik tai, ar sukurtas yyyymmddhhmmss katalogas ir jame yra žurnalo failas, bet ir WinSCP išėjimo kodą bei žurnalą.
3. Automatinis įkėlimo įrankis
Toliau kuriamas failų įkėlimo į Linux serverį scenarijus. Jo struktūra panaši į atsisiuntimo scenarijaus.
3-1. Scenarijaus sukūrimas
Pavyzdžio sąlygos:
• vykdymo aplinka – Windows 10;
• paskirties serveris – Linux;
• IP adresas – 192.168.50.10.
Pirmiausia sukurkite paleidimo BAT failą.
@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%
Šis failas perduoda tame pačiame kataloge esančio „put_files“ aplanko turinį ir nuotolinį paskirties katalogą „/tmp/“ scenarijui put_ftp.txt.
option batch on
option transfer binary
open test:testpassword@192.168.50.10
put %1% %2%
close
exit
Komanda „put %1% %2%“ įkelia pirmuoju argumentu nurodytus vietinius failus į antruoju argumentu nurodytą nuotolinį katalogą.
3-2. Pasirengimas vykdyti
Kaip ir atsisiuntimo atveju, prieš vykdydami patikrinkite SSH serverio rakto kontrolinį atspaudą. Jei tą patį serverį jau patikrinote, dar kartą priimti rakto nereikia, tačiau automatizacijoje vis tiek turi būti nustatyta aiški patikros taisyklė.
Istoriniame pavyzdyje naudojama ši interaktyvi komanda:
"C:\Program Files (x86)\WinSCP\WinSCP.com"
open test:testpassword@192.168.50.10 ⇒Bus paprašyta atsakyti, įveskite "y".
close
exit
exit
Pavyzdinė reikšmė „test:testpassword@192.168.50.10“ iliustruoja sintaksę. Tikrų prisijungimo duomenų scenarijuje nelaikykite.
Patikrinus serverio raktą ir saugiai parengus prisijungimo duomenis galima išbandyti įkėlimą.
3-3. Vykdymas
Paleiskite „file_put.bat“ bandomojoje aplinkoje.
Patikrinkite, ar „put_files“ katalogo failai įkelti į „/tmp/“, ir įvertinkite WinSCP išėjimo kodą bei žurnalą.
4. Kitos dažnai naudojamos komandos
Be pagrindinių atsisiuntimo ir įkėlimo veiksmų, dažnai prireikia autentifikavimo raktu ir nuotolinės komandos iškvietimo.
4-1. Autentifikavimas privačiuoju raktu
Ankstesniame pavyzdyje naudotas slaptažodis:
open test:testpassword@192.168.50.10
Norėdami autentifikuotis privačiuoju raktu, naudokite privatekey parinktį:
open test@192.168.50.10 -privatekey=id_rsa.ppk
„-privatekey=id_rsa.ppk“ nurodo rakto failo kelią. Santykinis kelias reiškia, kad id_rsa.ppk turi būti scenarijaus darbo kataloge. Jei failas yra C disko šaknyje, nurodykite „-privatekey=C:\id_rsa.ppk“. Rakto failą ir jo slaptafrazę saugokite pagal organizacijos paslapčių valdymo taisykles.
4-2. Nuotolinės apvalkalo komandos iškvietimas
Nuotolinei apvalkalo komandai iškviesti naudojama WinSCP komanda „call“:
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“ vykdo test.sh nuotoliniame serveryje. Argumentą galima perduoti, pavyzdžiui, „call sh /tmp/test.sh param1“. Neįterpkite į komandą nepatikrintų naudotojo duomenų.
5. Santrauka
WinSCP.com ir scenarijaus failai gali automatizuoti pasikartojančius SFTP atsisiuntimus bei įkėlimus.
Gamybinėje užduotyje papildomai patikrinkite SSH serverio raktą, nelaikykite prisijungimo duomenų kode, rašykite žurnalą ir perduokite nenulinį WinSCP išėjimo kodą užduočių planuoklei ar CI sistemai.
Techniniai straipsniai
Peržiūrėkite visus techninius straipsnius.
Profilis
Peržiūrėkite autoriaus profilį.
Kontaktai
