SFTP įkėlimo ir atsisiuntimo automatizavimas su WinSCP skriptais

WinSCP failų perkėlimo langas

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, get ir put sujungiamos į 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

  1. Kas yra WinSCP komanda?
  2. Automatinis atsisiuntimo įrankis
  3. Automatinis įkėlimo įrankis
  4. Kitos dažnai naudojamos komandos
  5. 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ą.

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% 

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.

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ą.

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%

Šis failas perduoda tame pačiame kataloge esančio „put_files“ aplanko turinį ir nuotolinį paskirties katalogą „/tmp/“ scenarijui put_ftp.txt.

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.