Automatyzacja przesyłania plików SFTP za pomocą skryptów WinSCP

Obrazy WinSCP.

Data publikacji:

Aktualizacja:


Artykuły > Automatyzacja przesyłania plików SFTP za pomocą skryptów WinSCP

Stan na rok 2026 i bezpieczne użytkowanie

Wniosek: użyj witryny WinSCP.com z plikiem skryptu, przypnij odcisk palca klucza hosta SSH serwera, przechowuj sekrety poza argumentami źródłowymi i procesowymi, włącz rejestrowanie i zakończ zadanie, gdy WinSCP zwróci niezerowy kod zakończenia.

Czego się nauczysz

  • Jak skryptowe operacje open, get i put pasują do wsadowego przepływu pracy.
  • Jak weryfikacja klucza hosta zapobiega zaufaniu przez zadanie nienadzorowane niewłaściwemu serwerowi.
  • Jak zapewnić powtarzalność transferów za pomocą dzienników, jawnych ścieżek i obsługi błędów.

Dla kogo: administratorzy systemu Windows automatyzujący przesyłanie plików do znanego punktu końcowego SFTP.

Aktualizacja na 2026 rok: Oryginalny skrypt poniżej zawiera ilustracyjne dane uwierzytelniające w postaci zwykłego tekstu i interaktywnie akceptuje hosta. Zachowaj go wyłącznie jako historyczny materiał do nauki; nie wdrażaj tych kluczy tajnych ani nie omijaj kontroli klucza hosta. Preferuj klucze SSH lub zatwierdzony sekretny magazyn i przetestuj sposób odzyskiwania.

Uwaga dotycząca bezpieczeństwa: polecenia i przykłady konfiguracji z pierwotnego artykułu nie zostały ponownie uruchomione we współczesnym środowisku produkcyjnym. Przed użyciem sprawdź wspierane wersje, kopie zapasowe, kontrolę dostępu i procedurę wycofania w oddzielnym środowisku testowym.

Oficjalne źródła pierwotne

Przegląd

Ten poradnik pokazuje, jak automatyzować pobieranie i wysyłanie plików przez SFTP za pomocą interfejsu wiersza poleceń WinSCP.

Wykonaj polecenia dostarczane przez program WinSCP za pomocą wiersza poleceń. Nic dziwnego, że WinSCP udostępnia polecenia. Zazwyczaj używa się pliku "WinSCP.exe", ale dostępny jest również plik "WinSCP.com". Prawie nigdy nie zobaczysz folderu "C:™Program Files (x86)™WinSCP" w miejscu docelowym skrótu, ponieważ zazwyczaj otwierasz go z poziomu skrótu, ale jeśli spojrzysz na miejsce docelowe skrótu, powinien tam być również zapisany folder "WinSCP.com". W tym miejscu tworzone jest narzędzie.

Spis treści

  1. Co to jest polecenie WinSCP?
  2. Narzędzie do automatycznego pobierania plików
  3. Narzędzie do automatycznego przesyłania danych
  4. Inne polecenia, które mogą być często używane
  5. streszczenie

1. Co to jest polecenie WinSCP?

WinSCP.com udostępnia w wierszu poleceń najważniejsze operacje znane z interfejsu graficznego. Plik skryptu pozwala wykonać te same transfery bez ręcznej obsługi.

1-1. Co możesz zrobić.

Można pobierać i wysyłać pliki, tworzyć foldery, wywoływać polecenia powłoki i wiele innych rzeczy.

Najczęściej używane polecenia to:

open: otwiera sesję.

get: pobiera plik z serwera.

put: wysyła plik lokalny.

exit: zamyka WinSCP.

1-2. Czego nie można robić.

Proste transfery są obsługiwane bezpośrednio. Przy bardziej złożonym wyborze, na przykład filtrowaniu według daty modyfikacji, połącz skrypt WinSCP z jawną logiką po stronie klienta Windows lub serwera.

Polecenie "call" może uruchomić polecenie zdalne, jeśli pozwalają na to protokół i uprawnienia konta.

2. Narzędzie do automatycznego pobierania plików

Przykład automatycznie pobiera dzienniki z serwera linuksowego na komputer z systemem Windows.

2-1. Utworzenie

Przykład wykorzystuje następujące warunki.

• Windows 10 jako środowisko wykonawcze.

• Serwer, który ma zostać przejęty, to Linux.

• Adres IP 192.168.50.10.

Najpierw należy utworzyć plik bat, który będzie punktem wyjścia do aktywacji.

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% 

Z wyjątkiem ostatniego wiersza pozostała część procesu to polecenia systemu Windows. Treść.

@setlocal enabledelayedexpansion

Ustawienia opóźnionych zmiennych środowiskowych. Krótko mówiąc, opis ten zapobiega ustawieniu wartości zmiennej, która może nie mieć odzwierciedlenia w rzeczywistości.

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

Proces pobierania wartości yyyymmddhmmss z bieżącego czasu i umieszczania jej w zmiennej FOLDER.

@mkdir %FOLDER%

Utwórz folder "yyyymmddhmmss" bezpośrednio pod folderem, w którym został wykonany program batch.

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

WinSCP.com (polecenie WinSCP). Wykonywane są polecenia wymienione w pliku "ftp.txt" w tym samym folderze, w którym zapisany jest plik wsadowy. Jako argument podaj ścieżkę do folderu, który właśnie utworzyłeś.

Na tym kończy się tworzenie pliku rozmówcy. Polecenie WinSCP jest następnie opisane w pliku "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

Treść.

option batch on

W przypadku procesów, które wymagają odpytywania, system automatycznie zakłada, że wybrano opcję "Nie" i automatycznie wykonuje proces. Jeśli to włączysz, wszystkie zduplikowane nazwy plików zostaną automatycznie nadpisane.

(Można utworzyć folder "yyyymmddhmmss" i umieścić w nim pliki, aby jednak nie powtarzały się ich nazwy.)

option transfer binary

Ustawienie to umożliwia przesyłanie danych w trybie binarnym.

open test:testpassword@192.168.50.10

'username:pass-word@IP address'. Połącz się z adresem IP "192.168.50.10".

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

Zapisz "/var/log/httpd/access_log" w folderze "yyyymmddhhmmss". ('%1%' to argument przekazany w pliku_get.bat)

Można także używać wyrażeń regularnych, więc jeśli napiszesz "/var/log/httpd/*", zostanie pobrany cały dziennik.

close
exit

Jest to proces odłączania.

Na tym kończy się tworzenie narzędzia.

2-2. przygotowanie do wdrożenia

Przed automatycznym transferem sprawdź i zapisz odcisk klucza hosta SSH oczekiwanego serwera.

Jeśli z serwerem nigdy nie łączono się za pomocą programu WinSCP, pojawi się pytanie, czy połączenie jest bezpieczne. Jeśli użytkownik naciśnie przycisk "Tak", zapis o naciśnięciu przycisku "Tak" zostanie pozostawiony w miejscu zwanym obszarem rejestru systemu Windows. Dzięki temu system nie jest sprawdzany po raz drugi. Podczas uruchamiania narzędzia należy to zrobić z wyprzedzeniem i zapisać informacje o serwerze w obszarze rejestru, aby upewnić się, że połączenie z nim jest bezpieczne, dlatego w wierszu poleceń należy wykonać następujące polecenia.

"C:\Program Files (x86)\WinSCP\WinSCP.com"
open test:testpassword@192.168.50.10 ⇒Zostaniesz poproszony o odpowiedź, wpisz "y".
close
exit
exit

'test:testpassword@192.168.50.10' należy zastąpić słowami 'username:password@IP address'.

Na tym kończą się wstępne przygotowania.

2-3. wdrożenie

Wreszcie nadszedł czas na jego wdrożenie. Kliknij dwukrotnie plik "file_get.bat".

Sukces, jeśli folder "yyyymmddhhmmss" zostanie utworzony, a dzienniki zostaną zapisane w tym folderze.

3. Narzędzie do automatycznego przesyłania danych

Następnym krokiem jest stworzenie narzędzia do umieszczania plików na serwerze Linux. Podstawowa konstrukcja będzie taka sama jak w przypadku narzędzia do pobierania.

3-1. tworzenie strony

Utwórz narzędzie z następującymi warunkami.

• Windows 10 jako środowisko wykonawcze.

• Serwer docelowy to system Linux.

• Adres IP 192.168.50.10.

Najpierw należy utworzyć plik bat, który będzie punktem wyjścia do aktywacji.

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%

Proces polega na zapisaniu plików w folderze 'put_files' w tym samym folderze, w którym wykonywany jest plik wsadowy, czyli w '/tmp/', co zostało wyjaśnione w narzędziu do automatycznego pobierania. Sam proces zapisu jest opisany w pliku "put_ftp.txt".

put_ftp.txt


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

Polecenie "put %1%\ %2%" przesyła pliki zgodnie z "plikiem źródłowym" i "folderem docelowym" przekazanymi jako argumenty, choć pominięto tu pewne wyjaśnienie, ponieważ jest to również wyjaśnione w narzędziu do automatycznego pobierania.

3-2. przygotowanie do wdrożenia

Podobnie jak w przypadku narzędzia do automatycznego pobierania plików, odciski palców są sprawdzane z wyprzedzeniem przed wykonaniem. (Nie jest wymagane, jeśli narzędzie do automatycznego pobierania zostało już raz uruchomione.)

Wykonaj następujące polecenie w wierszu poleceń.

"C:\Program Files (x86)\WinSCP\WinSCP.com"
open test:testpassword@192.168.50.10 ⇒Zostaniesz poproszony o odpowiedź, wpisz "y".
close
exit
exit

'test:testpassword@192.168.50.10' należy zastąpić słowami 'username:password@IP address'.

Na tym kończą się wstępne przygotowania.

3-3. wdrożenie

Wreszcie nadszedł czas na jego wdrożenie. Kliknij dwukrotnie plik "file_put.bat".

Sukces, jeśli pliki zapisane w poleceniu 'put_files' zostaną przeniesione do folderu '/tmp/'.

4. Inne polecenia, które mogą być często używane

Przedstawiliśmy podstawowe polecenia związane z pobieraniem i wysyłaniem plików, ale chcielibyśmy również opisać inne polecenia, które mogą być często używane.

4-1. uwierzytelnianie kluczy

Wcześniej zalogowano się przy użyciu uwierzytelniania hasłem zgodnie z poniższym opisem.

open test:testpassword@192.168.50.10

'open username:password@IP address'. W przypadku uwierzytelniania kluczy obowiązują następujące zasady.

open test@192.168.50.10 -privatekey=id_rsa.ppk

Opcja "-privatekey=id_rsa.ppk" to ścieżka do klucza. Ponieważ jest ona podana jako ścieżka względna, zakłada się, że klucz (id_rsa.ppk) znajduje się również w folderze, w którym znajduje się plik wykonywalny (plik bat). Na przykład, jeśli klucz znajduje się bezpośrednio pod dyskiem C, wpisz "-privatekey=C:id_rsa.ppk".

4-2. Wywołanie powłoki

Aby wywołać powłokę za pomocą polecenia WinSCP, należy napisać następującą instrukcję.

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

Polecenie 'test.sh' jest wykonywane przez 'call sh /tmp/test.sh'. Możliwe jest także przekazywanie argumentów. Przekazując argumenty, zapisuj je w postaci "call sh /tmp/test.sh param1".

5. streszczenie

Polecenie WinSCP zostało opisane.

Jeśli do codziennego rejestrowania i wysyłania plików używasz interfejsu graficznego WinSCP, możesz to zautomatyzować, tworząc narzędzia opisane w tym artykule. Może to być drobne zadanie, ale może pochłaniać dużo czasu, chyba że wykonuje się je codziennie. Zachęcamy do tworzenia narzędzi zwiększających efektywność.

■INFORMATION

Artykuły


■PROFILE

Profil


■Kontakt

Kontakt