SFTP augšupielādes un lejupielādes automatizēšana ar WinSCP skriptiem

WinSCP SFTP pārsūtīšanas automatizācijas piemērs

Publikācijas datums:

Atjaunināts:


Tehniskie raksti > SFTP augšupielādes un lejupielādes automatizēšana ar WinSCP skriptiem

2026. gada statuss un droša lietošana

Galvenais: izmantojiet WinSCP.com kopā ar skripta failu, pārbaudiet servera SSH atslēgas pirkstu nospiedumu, neglabājiet noslēpumus pirmkodā vai procesa argumentos, ieslēdziet žurnālu un pārtrauciet uzdevumu, ja WinSCP atgriež izejas kodu, kas nav nulle.

Ko jūs uzzināsiet

  • Kā skriptētās darbības open, get un put iekļaujas pakešuzdevuma darbplūsmā.
  • Kā servera SSH atslēgas verifikācija neļauj bez uzraudzības esošam darbam uzticēties nepareizajam serverim.
  • Kā padarīt pārsūtīšanu atkārtojamu, izmantojot žurnālus, skaidrus ceļus un kļūdu apstrādi.

Kam tas paredzēts: Windows administratoriem, kuri automatizē failu pārsūtīšanu uz zināmu SFTP galapunktu.

2026. gada konteksts: sākotnējā skriptā tālāk tikai ilustrācijas nolūkā akreditācijas dati ir ierakstīti atklātā tekstā, un servera atslēga tiek pieņemta interaktīvi. Uztveriet to kā vēsturisku mācību piemēru: neieviesiet šādus noslēpumus ražošanā un neapejiet servera atslēgas pārbaudi. Dodiet priekšroku SSH atslēgām vai apstiprinātai noslēpumu glabātavai un pārbaudiet kļūmes un atkārtotas izpildes scenārijus.

Drošības piezīme. Sākotnējā rakstā esošās komandas un konfigurācijas piemēri nav atkārtoti izpildīti pašreizējā ražošanas vidē. Pirms to lietošanas pārbaudiet atbalstītās versijas, dublējumus, piekļuves vadīklas un atcelšanas darbības atsevišķā testa vidē.

Galvenie oficiālie avoti

Pārskats

Šajā rakstā parādīts, kā ar WinSCP komandām izveidot automatizētu failu lejupielādes un augšupielādes rīku. Izpildiet WinSCP sniegtās komandas, izmantojot komandu uzvedni. Nav pārsteidzoši, ka WinSCP nodrošina komandas. Parasti izmantojiet "WinSCP.exe", bet ir pieejams arī "WinSCP.com". Jūs gandrīz nekad neredzēsiet mapi "C:\Program Files (x86)\WinSCP" īsceļu galamērķī, jo parasti to atverat, izmantojot īsceļu, bet, ja apskatāt īsceļu galamērķi, tur būtu jāglabā arī "WinSCP.com". Šeit tiek izveidots rīks.

Satura rādītājs

  1. Kas ir WinSCP skripts?
  2. Automātiskās lejupielādes rīks
  3. Automātiskās augšupielādes rīks
  4. Citas bieži lietojamas komandas
  5. Kopsavilkums

1. Kas ir WinSCP skripts?

WinSCP skripts ļauj komandrindā izpildīt darbības, ko parasti veic grafiskajā saskarnē. Tas ir piemērots atkārtojamu failu pārsūtīšanas uzdevumu automatizēšanai.

1-1. Atbalstītā automatizācija

Ar WinSCP skriptiem var lejupielādēt un augšupielādēt failus, izveidot direktorijus, sinhronizēt saturu un izsaukt atbalstītas attālās komandas.

Biežāk lietotās komandas ir šādas.

open — atver savienojumu.

get — lejupielādē failus.

put — augšupielādē failus.

exit — noslēdz sesiju.

1-2. WinSCP skriptu ierobežojumi

Pamata failu lejupielādi un augšupielādi var automatizēt tieši, taču sarežģītai failu atlasei vai nosacījumu loģikai bieži vajadzīgs papildu skripts.

Piemēram, atlasīt failus pēc konkrēta modificēšanas datuma ar vienkāršām WinSCP komandām nav ērti.

Sarežģītu atlases loģiku var ievietot lokālā pakešfailā vai PowerShell skriptā, vai arī ar komandu 'call' izsaukt rūpīgi pārbaudītu attālo komandu. Ārēju ievadi vienmēr apstrādājiet kā neuzticamu un korekti citējiet atbilstoši mērķa čaulas sintaksei.

2. Automātiskās lejupielādes rīks

Pirmais rīks automātiski lejupielādē Linux serverī saglabātos žurnālfailus.

2-1. Izveide

Piemērā izmantoti šādi nosacījumi.

• Izpildes vide: Windows 10.

• Avota serveris: Linux.

• IP adrese: 192.168.50.10.

Vispirms izveidojiet .bat failu, kas palaiž procesu.

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% 

Visas rindas, izņemot pēdējo, ir Windows pakešfaila komandas. Tālāk īsi izskaidrota to nozīme.

@setlocal enabledelayedexpansion

Šis iestatījums ieslēdz vides mainīgo aizkavēto izvēršanu, lai cikla laikā piešķirtās vērtības tiktu nolasītas korekti.

@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%

No pašreizējā laika tiek izveidota virkne yyyymmddhhmmss un saglabāta mainīgajā FOLDER.

@mkdir %FOLDER%

Direktorijā, no kura palaists pakešfails, tiek izveidota mape "yyyymmddhhmmss".

@"C:\Program Files (x86)\WinSCP\WinSCP.com" /console /script=%~dp0ftp.txt /parameter %FOLDER% 

Tiek palaists WinSCP.com un izpildītas failā "ftp.txt" ierakstītās komandas. Fails atrodas tajā pašā mapē kā pakešfails, un jaunizveidotās mapes ceļš tiek nodots kā arguments.

Ar to palaidēja fails ir gatavs. WinSCP komandas tālāk tiek ierakstītas failā "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

Komandu nozīme ir šāda.

option batch on

Pakešrežīmā interaktīviem jautājumiem tiek izmantota skriptā noteiktā noklusējuma atbilde. Šajā piemērā apstiprinājuma vaicājumi ir izslēgti, tāpēc vienāda nosaukuma faili var tikt pārrakstīti. Vispirms pārbaudiet tieši šo pārsūtīšanu drošā testa direktorijā. (Varat izveidot mapi "yyyymmmddhmmss" un ievietot failus tajā, lai nedublētos failu nosaukumi.)

option transfer binary

Datu pārsūtīšanai tiek iestatīts binārais režīms.

open test:testpassword@192.168.50.10

Sesijas URL norāda lietotājvārdu, paroli un servera IP adresi; šajā piemērā savienojums tiek veidots ar adresi "192.168.50.10".

get /var/log/httpd/access_log %1%\

Fails '/var/log/httpd/access_log' tiek saglabāts mapē 'yyyymmddhhmmss'. ('%1%' ir arguments, ko nodod fails file_get.bat.)

Var izmantot aizstājējzīmes. Piemēram, "/var/log/httpd/*" atlasa visus atbilstošos ierakstus šajā direktorijā; tā ir aizstājējzīmes izteiksme, nevis regulārā izteiksme.

close
exit

Šī darbība noslēdz sesiju.

Ar to lejupielādes rīks ir izveidots.

2-2. Sagatavošana izpildei

Pirms automātiskas izpildes pārbaudiet servera SSH atslēgas pirkstu nospiedumu.

Pirmajā interaktīvajā savienojumā WinSCP var lūgt uzticēties servera atslēgai un saglabāt izvēli Windows reģistrā. Automatizētam uzdevumam nevajadzētu interaktīvi uzticēties nezināmai atslēgai. Iegūstiet paredzamo pirkstu nospiedumu pa neatkarīgu kanālu un pirms pirmās automātiskās izpildes norādiet tieši šo vērtību.

"C:\Program Files (x86)\WinSCP\WinSCP.com"
open test:testpassword@192.168.50.10 ⇒Tiek pieprasīta atbilde, ievadiet "y".
close
exit
exit

Vēsturiskajā piemērā sesijas URL ir iegulti akreditācijas dati. Ražošanas paroli neglabājiet pakešfailā vai komandrindā; izmantojiet aizsargātu WinSCP konfigurāciju vai citu atbalstītu noslēpumu avotu.

Ar to sagatavošana ir pabeigta.

2-3. Izpilde

Lai palaistu lejupielādi, veiciet dubultklikšķi uz 'file_get.bat'.

Izpilde ir sekmīga, ja izveidota mape "yyyymmddhhmmss" un tajā saglabāti žurnālfaili.

3. Automātiskās augšupielādes rīks

Nākamais rīks augšupielādē failus Linux serverī. Tā pamatuzbūve ir tāda pati kā lejupielādes rīkam.

3-1. Izveide

Piemērā izmantoti šādi nosacījumi.

• Izpildes vide: Windows 10.

• Mērķa serveris: Linux.

• IP adrese: 192.168.50.10.

Vispirms izveidojiet .bat failu, kas palaiž procesu.

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%

Augšupielādes piemērā faili no lokālās mapes "put_files", kas atrodas blakus pakešfailam, tiek nosūtīti uz attālā servera mapi "/tmp/". Pārsūtīšanas komandas ir saglabātas failā "put_ftp.txt".

put_ftp.txt


option batch on
option transfer binary
open test:testpassword@192.168.50.10
put %1% %2%
close
exit

Rinda "put %1%\%2%" augšupielādē failu, kura avota ceļš un mērķa direktorijs skriptam nodoti kā argumenti.

3-2. Sagatavošana izpildei

Pirms augšupielādes uzdevuma palaišanas pa neatkarīgu kanālu pārbaudiet paredzamo servera atslēgas pirkstu nospiedumu. Iepriekš kešota atslēga pati par sevi neapliecina, ka tā pieder pareizajam serverim.

Komandu uzvednē izpildiet tālāk parādīto komandu.

"C:\Program Files (x86)\WinSCP\WinSCP.com"
open test:testpassword@192.168.50.10 ⇒Tiek pieprasīta atbilde, ievadiet "y".
close
exit
exit

Arī šajā vēsturiskajā piemērā iegultie akreditācijas dati ražošanas vidē jāaizstāj ar aizsargātu akreditācijas datu pārvaldību.

Ar to sagatavošana ir pabeigta.

3-3. Izpilde

Lai palaistu augšupielādi, veiciet dubultklikšķi uz 'file_put.bat'.

Izpilde ir sekmīga, ja mapē 'put_files' saglabātie faili ir pārsūtīti uz mapi '/tmp/'.

4. Citas bieži lietojamas komandas

Automatizētā pārsūtīšanā noder arī tālāk minētās WinSCP komandas.

4-1. Atslēgas autentifikācija

Iepriekšējā piemērā izmantota paroles autentifikācija.

open test:testpassword@192.168.50.10

Atslēgas autentifikācijai savienojuma komandā jānorāda privātā atslēga.

open test@192.168.50.10 -privatekey=id_rsa.ppk

'-privatekey=id_rsa.ppk' norāda atslēgas ceļu. Relatīvais ceļš pieņem, ka atslēga (id_rsa.ppk) atrodas tajā pašā mapē kā izpildāmais .bat fails. Ja atslēga atrodas, piemēram, C diska saknē, jānorāda pilnais ceļš "-privatekey=C:\id_rsa.ppk".

4-2. Attālās čaulas komandas

Lai ar WinSCP izsauktu attālās čaulas komandu, izmantojiet tālāk parādīto sintaksi.

option batch on
option transfer binary
open test:testpassword@192.168.50.10
call sh /tmp/test.sh
close
exit

Ar 'call sh /tmp/test.sh' tiek izpildīts skripts 'test.sh'. Tam var nodot arī argumentus, piemēram, "call sh /tmp/test.sh param1".

5. Kopsavilkums

WinSCP skripti var aizstāt atkārtotas darbības grafiskajā saskarnē. Ražošanas uzdevumā pārbaudiet servera atslēgu, aizsargājiet akreditācijas datus, ierobežojiet avota un mērķa ceļus, reģistrējiet izejas kodu un paredziet daļējas pārsūtīšanas un atkārtotas izpildes scenārijus.