Avtomatizacija nalaganja in prenašanja prek SFTP s skriptami WinSCP

Ikona programa WinSCP

Datum objave:

Posodobljeno:


Tehnični članki > Avtomatizacija nalaganja in prenašanja prek SFTP s skriptami WinSCP

Stanje in varna uporaba v letu 2026

Sklep: Pri avtomatizaciji z WinSCP.com preverite prstni odtis ključa SSH gostitelja, poverilnic ne shranjujte v izvorni kodi ali argumentih procesa, vključite dnevnike in vsako neničelno izhodno kodo obravnavajte kot napako.

Kaj boste izvedeli

  • Kako ukaze open, get in put vključiti v paketni postopek.
  • Kako s preverjanjem ključa gostitelja preprečiti povezavo z napačnim strežnikom.
  • Kako z izrecnimi potmi, dnevniki in obravnavo napak zagotoviti ponovljive prenose.

Komu je članek namenjen? Skrbnikom sistema Windows, ki avtomatizirajo prenos datotek na znan strežnik SFTP.

Opomba za leto 2026: Stari primer spodaj vsebuje poverilnice v navadnem besedilu in interaktivno sprejme ključ gostitelja. Uporabite ga le kot zgodovinsko učno gradivo. V produkciji uporabite ključ SSH ali odobreno shrambo skrivnosti, vnaprej preverite ključ gostitelja ter preizkusite ravnanje ob napakah in povrnitev.

Varnostna opomba: Ukazi in konfiguracijski primeri iz prvotnega članka niso bili znova preizkušeni v sodobnem produkcijskem okolju. Pred uporabo v ločenem preizkusnem okolju preverite podprte različice, izdelajte varnostne kopije ter določite nadzor dostopa in postopek povrnitve.

Uradni viri

Pregled

WinSCP poleg grafičnega programa WinSCP.exe vključuje tudi konzolni program WinSCP.com, s katerim je mogoče ukaze izvajati iz ukazne vrstice. V nadaljevanju sta prikazana preprosta primera za samodejno prenašanje datoteke s strežnika Linux in nalaganje datotek nanj. Datoteka WinSCP.com je običajno v isti namestitveni mapi kot WinSCP.exe, na primer v "C:\Program Files (x86)\WinSCP".

Kazalo vsebine

  1. Kaj omogoča ukazna različica WinSCP
  2. Orodje za samodejno prenašanje
  3. Orodje za samodejno nalaganje
  4. Drugi uporabni ukazi
  5. Povzetek

1. Kaj omogoča ukazna različica WinSCP

Konzolni program WinSCP.com omogoča izvajanje operacij, ki so sicer na voljo v grafičnem vmesniku WinSCP. Ker ukaze bere iz skripte, je primeren za ponovljive paketne postopke.

1-1. Podprte operacije

S skriptami je mogoče prenašati in nalagati datoteke, ustvarjati imenike ter na oddaljenem strežniku klicati ukaze lupine.

Najpogosteje se uporabljajo naslednji ukazi:

open: vzpostavi povezavo.

get: prenese datoteke z oddaljenega strežnika.

put: naloži lokalne datoteke na oddaljeni strežnik.

exit: konča program WinSCP.

1-2. Omejitve

Osnovni prenosi so preprosti, zahtevnejše izbiranje datotek po metapodatkih pa je v skripti WinSCP lahko nerodno.

Primer je izbor datotek glede na datum zadnje spremembe.

Pri zapletenih pogojih je mogoče z ukazom 'call' poklicati oddaljeno lupino, lokalno pripravo podatkov pa izvesti z ukazi sistema Windows.

2. Orodje za samodejno prenašanje

Prvi primer samodejno prenese dnevniško datoteko s strežnika Linux.

2-1. Izdelava skript

Primer uporablja naslednje pogoje:

• Izvajalno okolje je Windows 10.

• Oddaljeni strežnik uporablja Linux.

• Naslov IP strežnika je 192.168.50.10.

Najprej ustvarite paketno datoteko, ki zažene postopek.

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% 

Prvih pet vrstic so notranji ukazi paketne datoteke Windows, zadnja pa zažene WinSCP.com. Posamezni deli so pojasnjeni spodaj.

@setlocal enabledelayedexpansion

Ta nastavitev omogoči odloženo razširjanje spremenljivk okolja v paketni datoteki.

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

Iz trenutnega datuma in časa se sestavi ime v obliki yyyymmddhmmss, nato pa se celotna pot shrani v spremenljivko FOLDER.

@mkdir %FOLDER%

V mapi paketne datoteke se ustvari podmapa z imenom v obliki "yyyymmddhmmss".

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

Zadnja vrstica zažene WinSCP.com in izvede ukaze iz datoteke "ftp.txt" v isti mapi. Pot do pravkar ustvarjene mape posreduje kot argument.

S tem je paketna datoteka pripravljena. Ukazi WinSCP so določeni v datoteki "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

Posamezne vrstice imajo naslednji namen.

option batch on

Ta možnost izklopi interaktivna vprašanja in uporabi vnaprej določene odgovore. Pred nenadzorovanim zagonom preverite vedenje ob obstoječih datotekah. Časovno označena ciljna mapa v tem primeru zmanjšuje možnost prekrivanja imen.

option transfer binary

Ta nastavitev izbere binarni način prenosa.

open test:testpassword@192.168.50.10

Vrstica vzpostavi povezavo z naslovom IP "192.168.50.10". V starem primeru je oblika poverilnic 'username:password@IP address'.

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

Datoteka '/var/log/httpd/access_log' se prenese v časovno označeno mapo. V skripti WinSCP zapis '%1%' predstavlja prvi parameter, ki ga paketna datoteka posreduje z možnostjo /parameter.

Z masko "/var/log/httpd/*" je mogoče izbrati vse datoteke v tem imeniku.

close
exit

Ukaza zapreta povezavo in končata program.

S tem je primer orodja za prenašanje pripravljen.

2-2. Priprava na izvajanje

Pred prvim zagonom je treba preveriti prstni odtis ključa gostitelja.

Stari primer spodaj odpre interaktivno sejo in sprejeti ključ shrani v register sistema Windows, zato pri naslednji povezavi vprašanja ne prikaže več. Ta postopek ni nadomestilo za preverjanje: prikazani prstni odtis primerjajte z vrednostjo, ki ste jo dobili po zaupanja vrednem kanalu. Za sodobno nenadzorovano opravilo ključ gostitelja izrecno pripnite skladno z uradno dokumentacijo WinSCP.

"C:\Program Files (x86)\WinSCP\WinSCP.com"
open test:testpassword@192.168.50.10 ⇒Prikaže se poziv za odgovor, vnesite "y".
close
exit
exit

Vrednost 'test:testpassword@192.168.50.10' v učnem primeru pomeni 'uporabniško ime:geslo@naslov IP'. V produkcijski skripti gesla ne zapisujte v navadnem besedilu.

Po preverjanju ključa gostitelja je priprava končana.

2-3. Izvajanje

Postopek zaženete z datoteko 'file_get.bat'.

Ob uspešnem izvajanju se ustvari časovno označena mapa, v kateri je prenesena dnevniška datoteka. Pri avtomatizaciji preverite tudi izhodno kodo in dnevnik seje.

3. Orodje za samodejno nalaganje

Drugi primer naloži lokalne datoteke na strežnik Linux. Zgradba je podobna kot pri orodju za prenašanje.

3-1. Izdelava skript

Primer uporablja naslednje pogoje:

• Izvajalno okolje je Windows 10.

• Ciljni strežnik uporablja Linux.

• Naslov IP strežnika je 192.168.50.10.

Najprej ustvarite paketno datoteko, ki zažene postopek.

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%

Paketna datoteka izbere vse datoteke iz podmape "put_files" in kot cilj določi oddaljeni imenik "/tmp/". Dejanski prenos izvede skripta "put_ftp.txt".

put_ftp.txt


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

Ukaz "put %1% %2%" naloži datoteke iz izvorne poti v ciljni imenik; obe vrednosti prejme kot parametra skripte, ki ju posreduje paketna datoteka.

3-2. Priprava na izvajanje

Tudi pred nalaganjem preverite prstni odtis ključa gostitelja. Če ste isti preverjeni ključ že shranili pri prejšnjem primeru, koraka ni treba ponoviti.

Stari interaktivni postopek v ukazni vrstici je prikazan spodaj.

"C:\Program Files (x86)\WinSCP\WinSCP.com"
open test:testpassword@192.168.50.10 ⇒Prikaže se poziv za odgovor, vnesite "y".
close
exit
exit

Vrednost 'test:testpassword@192.168.50.10' v učnem primeru pomeni 'uporabniško ime:geslo@naslov IP'. V produkcijski skripti gesla ne zapisujte v navadnem besedilu.

Po preverjanju ključa gostitelja je priprava končana.

3-3. Izvajanje

Postopek zaženete z datoteko 'file_put.bat'.

Ob uspešnem izvajanju se datoteke iz mape 'put_files' naložijo v oddaljeni imenik '/tmp/'. Preverite izhodno kodo, dnevnik seje in pričakovane datoteke na strežniku.

4. Drugi uporabni ukazi

Poleg osnovnega prenašanja in nalaganja sta pri avtomatizaciji pogosto uporabna preverjanje pristnosti s ključem in klic oddaljene lupine.

4-1. Preverjanje pristnosti s ključem

Prejšnja primera uporabljata prijavo z geslom v naslednji obliki.

open test:testpassword@192.168.50.10

Namesto oblike 'open username:password@IP address' je mogoče uporabiti preverjanje pristnosti z zasebnim ključem.

open test@192.168.50.10 -privatekey=id_rsa.ppk

'-privatekey=id_rsa.ppk' določa pot do zasebnega ključa. Relativna pot se razreši glede na delovno mapo procesa, zato je za nenadzorovana opravila varneje uporabiti preverjeno absolutno pot. Če je ključ neposredno na pogonu C, je primer poti "-privatekey=C:\id_rsa.ppk". Datoteko ključa zaščitite z ustreznimi dovoljenji.

4-2. Klic oddaljene lupine

Ukaz oddaljene lupine je mogoče iz skripte WinSCP poklicati na naslednji način.

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

Vrstica 'call sh /tmp/test.sh' izvede oddaljeni skript 'test.sh'. Argumente je mogoče dodati za potjo, na primer "call sh /tmp/test.sh param1". Vse vrednosti pred posredovanjem ustrezno preverite.

5. Povzetek

Konzolna različica WinSCP omogoča avtomatizacijo prenašanja, nalaganja in izbranih oddaljenih ukazov.

Rutinske prenose iz grafičnega vmesnika je mogoče pretvoriti v ponovljiv postopek. Produkcijska rešitev mora poleg funkcionalnosti vključevati preverjanje ključa gostitelja, varno shranjevanje poverilnic, dnevnike ter preverjanje izhodnih kod.

Pri uporabi v novejšem okolju upoštevajte tudi opombe o različicah in varnosti na začetku članka.