SFTP augšupielādes un lejupielādes automatizēšana ar WinSCP skriptiem
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,getunputiekļ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?
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.
@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".
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.
@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".
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.
