Автоматизация загрузки и скачивания по SFTP с помощью скриптов WinSCP
Дата публикации:
Обновлено:
Статьи > Автоматизация загрузки и скачивания по SFTP с помощью скриптов WinSCP
Статус 2026 года и безопасное использование
Вывод: используйте WinSCP.com с файлом сценария, прикрепите отпечаток ключа хоста SSH сервера, не допускайте раскрытия секретов в аргументах источника и процесса, включите ведение журнала и завершите задание, когда WinSCP вернет ненулевой код завершения.
Чему вы научитесь
- Как сценарии
open,getиputвписываются в пакетный рабочий процесс. - Как проверка ключа хоста не позволяет автоматическому заданию доверять неправильному серверу.
- Как сделать передачу повторяемой с помощью журналов, явных путей и обработки ошибок.
Для кого: администраторы Windows, автоматизирующие передачу файлов на известную конечную точку SFTP.
Актуальность на 2026 год. Исходный сценарий ниже содержит иллюстративные учетные данные в виде открытого текста и принимает хост в интерактивном режиме. Храните его только как исторический учебный материал; не раскрывайте эти секреты и не обходите проверки ключей хоста. Отдайте предпочтение ключам SSH или утвержденному секретному хранилищу и проверьте поведение восстановления.
Примечание по безопасности. Команды и примеры конфигурации из исходной статьи не проверялись повторно в современной производственной среде. Перед применением проверьте поддерживаемые версии, резервные копии, контроль доступа и процедуру отката в отдельной тестовой среде.
Официальные первоисточники
Обзор
В руководстве показано, как автоматизировать скачивание и отправку файлов по SFTP через интерфейс командной строки WinSCP.
Выполните команды, предоставленные WinSCP, с помощью командной строки. Неудивительно, что WinSCP предоставляет команды. Обычно вы используете 'WinSCP.exe', но можно использовать и 'WinSCP.com'. Вы почти никогда не увидите папку "C:\Program Files (x86)\WinSCP" в месте назначения ярлыка, так как обычно вы открываете его в основном с ярлыка, но если вы посмотрите на место назначения ярлыка, "WinSCP.com" также должен храниться там. Именно здесь создается инструмент.Оглавление
- Что такое команда WinSCP?
- Инструмент автоматической загрузки
- 2-1. создание
- 2-2. подготовка к внедрению
- 2-3. реализация
- Инструмент автоматической загрузки
- 3-1. создание
- 3-2. подготовка к внедрению
- 3-3. реализация
- Другие команды, которые могут часто использоваться
- 4-1. аутентификация ключа
- 4-2. Вызов оболочки
- резюме
1. Что такое команда WinSCP?
WinSCP.com предоставляет в командной строке основные операции графического интерфейса. Файл сценария позволяет выполнять те же передачи без ручного вмешательства.
1-1. Что вы можете сделать.
Вы можете загружать и выгружать файлы, создавать папки, вызывать команды оболочки и многое другое.
Чаще всего используются следующие команды.
open: открывает сеанс.
get: скачивает удалённый файл.
put: отправляет локальный файл.
exit: завершает работу WinSCP.
1-2. Что вы не можете сделать.
Простые передачи поддерживаются напрямую. Для сложного отбора, например фильтрации по дате изменения, дополните сценарий WinSCP явной логикой на клиенте Windows или сервере.
Команда 'call' может запустить удалённую команду, если это допускают протокол и права учётной записи.
2. Инструмент автоматической загрузки
В примере журналы автоматически скачиваются с Linux-сервера на компьютер с Windows.
2-1. Создание
В примере используются следующие условия.
• Windows 10 в качестве среды выполнения.
• Сервер, который будет приобретен, является Linux.
• IP-адрес 192.168.50.10.
Сначала создайте 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%
За исключением последней строки, остальная часть процесса является командой Windows. Содержание.
@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%
Процесс получения yyyymmddhmmss из текущего времени и окончательного помещения его в переменную FOLDER.
@mkdir %FOLDER%
Создайте папку 'yyyymmddhmmss' непосредственно под папкой, в которой был выполнен пакет.
@"C:\Program Files (x86)\WinSCP\WinSCP.com" /console /script=%~dp0ftp.txt /parameter %FOLDER%
WinSCP.com (команда WinSCP). Выполняются команды, перечисленные в файле "ftp.txt" в той же папке, где хранится пакетный файл. Передайте в качестве аргумента путь к папке, которую вы только что создали.
На этом создание файла вызывающего абонента завершено. Команда WinSCP описана в файле "ftp.txt".
option batch on
option transfer binary
open test:testpassword@192.168.50.10
get /var/log/httpd/access_log %1%\
close
exit
Содержание.
option batch on
Для процессов, требующих запроса, система автоматически предполагает, что выбрано значение "Нет", и автоматически выполняет процесс. Если вы включите этот параметр, он автоматически перезапишет все дублирующиеся имена файлов.
(Вы можете создать папку "yyyymmddhmmss" и поместить файлы туда, чтобы не было дублирования имен файлов.)option transfer binary
Настройте передачу данных в двоичном режиме.
open test:testpassword@192.168.50.10
'username:pass-word@IP address'. Подключитесь к IP-адресу "192.168.50.10".
get /var/log/httpd/access_log %1%\
Храните '/var/log/httpd/access_log' в папке 'yyyymmddhhmmss'. ('%1%' - аргумент, переданный в файле file_get.bat)
Также можно использовать регулярные выражения, поэтому если вы напишете "/var/log/httpd/*", то можно получить весь журнал.
close
exit
Это процесс разъединения.
На этом создание инструмента завершено.
2-2. подготовка к внедрению
Перед автоматической передачей проверьте и сохраните отпечаток SSH-ключа ожидаемого сервера.
Если к серверу никогда не подключались через WinSCP, вам будет задан вопрос, безопасно ли подключаться. Если вы нажмете "Да", запись о нажатии "Да" будет оставлена в месте, называемом областью реестра Windows. Это гарантирует, что система не будет проверяться второй раз. При запуске инструмента необходимо сделать это заранее и сохранить информацию о сервере в области реестра, чтобы обеспечить безопасность подключения к нему, поэтому выполните следующие команды в командной строке.
"C:\Program Files (x86)\WinSCP\WinSCP.com"
open test:testpassword@192.168.50.10 ⇒Вам будет предложено ответить, введите "y".
close
exit
exit
'test:testpassword@192.168.50.10' следует заменить на 'имя пользователя:пароль@IP-адрес'.
На этом предварительная подготовка завершена.
2-3. реализация
Наконец, пришло время его реализовать. Дважды щелкните на файле 'file_get.bat'.
Успех, если папка "yyyymmddhhmmss" создана и журналы сохранены в ней.
3. Инструмент автоматической загрузки
Следующий шаг - создание инструмента для размещения файлов на сервере Linux. Основная конструкция будет такой же, как и у инструмента загрузки.
3-1. создание
Создайте инструмент со следующими условиями.
• Windows 10 в качестве среды выполнения.
• Сервер назначения - это Linux.
• IP-адрес 192.168.50.10.
Сначала создайте 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%
Поскольку это было объяснено в инструменте автоматической загрузки, небольшое пояснение опускается, но процесс заключается в сохранении файлов в папке 'put_files' в той же папке, где выполняется пакетный файл в '/tmp/'. Фактический процесс хранения описан в файле "put_ftp.txt".
option batch on
option transfer binary
open test:testpassword@192.168.50.10
put %1% %2%
close
exit
Команда "put %1%\ %2%" загружает файлы в соответствии с "исходным файлом" и "папкой назначения", переданными в качестве аргументов, хотя небольшое пояснение опущено, поскольку это также объясняется в инструменте автоматической загрузки.
3-2. подготовка к внедрению
Как и в случае с инструментом автоматической загрузки, отпечатки пальцев проверяются заранее перед выполнением. (Не требуется, если инструмент автоматической загрузки был запущен один раз.)
Выполните следующую команду в командной строке.
"C:\Program Files (x86)\WinSCP\WinSCP.com"
open test:testpassword@192.168.50.10 ⇒Вам будет предложено ответить, введите "y".
close
exit
exit
'test:testpassword@192.168.50.10' следует заменить на 'имя пользователя:пароль@IP-адрес'.
На этом предварительная подготовка завершена.
3-3. реализация
Наконец, пришло время его реализовать. Дважды щелкните по файлу 'file_put.bat'.
Успех, если файлы, сохраненные в 'put_files', переданы в папку '/tmp/'.
4. Другие команды, которые могут часто использоваться
Мы познакомили вас с основными командами загрузки и выгрузки, но также хотели бы описать другие команды, которые могут часто использоваться.
4-1. аутентификация ключа
Ранее вы вошли в систему с аутентификацией по паролю в соответствии со следующим описанием.
open test:testpassword@192.168.50.10
'open username:password@IP address'. Для аутентификации ключа действует следующее.
open test@192.168.50.10 -privatekey=id_rsa.ppk
'-privatekey=id_rsa.ppk' - это путь к ключу. Поскольку он указан как относительный путь, предполагается, что ключ (id_rsa.ppk) также находится в папке, где расположен исполняемый файл (bat-файл). Например, если ключ находится непосредственно под диском C, напишите "-privatekey=C:\id_rsa.ppk".
4-2. Вызов оболочки
Чтобы вызвать оболочку с помощью команды WinSCP, напишите следующее.
option batch on
option transfer binary
open test:testpassword@192.168.50.10
call sh /tmp/test.sh
close
exit
'test.sh' выполняется командой 'call sh /tmp/test.sh'. Также можно передавать аргументы. При передаче аргументов записывайте их как "call sh /tmp/test.sh param1".
5. резюме
Была описана команда WinSCP.
Если вы обычно используете графический интерфейс WinSCP для регистрации и загрузки файлов на ежедневной основе, вы можете автоматизировать это, создав инструменты, описанные в этой статье. Это может быть незначительная задача, но она может отнимать много времени, за исключением тех случаев, когда она выполняется каждый день. Мы призываем вас создавать инструменты для повышения эффективности.
