Winscp получить список файлов
Мне нужно создать решение, основанное на WinSCP и пакетном сценарии Windows. Ниже перечислены задачи, которые должен выполнить скрипт:
- Сохраните список файлов из удаленного каталога в файл, расположенный на машине, на которой запущен пакетный скрипт.
- Запустите WinSCP в командном режиме ( /command ), используя сценарий WinSCP, переданный как параметр ( /script=name_of_script_file.txt ), и получите файлы ( get команду) из ранее созданного списка.
Самое главное - получить список файлов, сохранить его и передать имена файлов, находящихся в созданном файле, в WinSCP для их получения.
Как это реализовать?
Нет простого способа реализовать это, используя только сценарии WinSCP . Возможно, смотрите в самом конце моего ответа, но это может быть не идеальное решение.
Почему вы делаете это в два этапа? Почему бы вам не скачать каталог напрямую?
Если вам действительно нужен список (например, для дальнейшей обработки), вы можете вместо получения списка файлов в каталоге получить список фактически загруженных файлов.
Включите ведение журнала XML и получите список из журнала XML.
Вы получите журнал вроде:
Если вам нужен простой текстовый список, вы можете использовать XSLT для его преобразования (например download.xslt ):
Для его обработки используйте любой XSLT-процессор:
Microsoft msxsl.exe (не рекомендуется, но доступно в Интернет-архиве )
Используйте Session.ListDirectory для получения содержимого удаленного каталога.
Для рекурсивного листинга вы также можете использовать расширение Session.EnumerateRemoteFiles .
Итерируйте результаты и вызовите Session.GetFiles для каждого файла.
Если вы предпочитаете простой сценарий:
Единственный способ надежно получить простой текстовый список удаленных файлов - это использовать ведение журнала XML для записи вывода команды ls сценария :
Вы получите журнал вроде:
Опять же, используйте XSLT для преобразования журнала XML в простой текстовый список файлов:
Чтобы заставить сценарий WinSCP загружать файлы в соответствии со списком в виде обычного текста, см. Пример сценария « Загрузка списка файлов» . Это для загрузки, а просто заменить put с get и обратным порядком аргументов , чтобы превратить его загрузку.
Обратите внимание, что /command параметр не входит в «командный» (сценарий?) Режим. Это для передачи команд сценария в командной строке (как использовалось в моем ответе). Вы используете файл сценария ( /script ). Нет смысла добавлять к нему пустой /command параметр.
In addition to graphical interface, WinSCP offers scripting/console interface with many commands. The commands can be typed in interactively, or read from script file or another source.
Передача данных.
Двухпанельный интерфейс по образу Total Commander, как правило, удобнее интерфейса в стиле Проводника Windows. В левом окне отображается локальная файловая система, в правом – файловая система сервера, к которому выполнено подключение.
Настройки WinSCP позволяют поменять панели местами - Настройки - Внешний вид - Коммандер - Панели - включить Поменять панели местами (локальная справа, сервер слева)
В процессе передачи данных отображается статистическая информация:
Важной особенностью Winscp является возможность синхронизации локальных и удаленных данных. Режим синхронизации включается через меню Команды - Синхронизация .
В настройках синхронизации можно выбрать 3 направления:
Компьютер - изменения в удаленном каталоге применяются по отношению к локальному.
Сервер - изменения в локальном каталоге применяются по отношению к удаленному.
В обе стороны - изменения выполняются как в удаленном, так и в локальном каталогах.
Кроме направления синхронизации, можно выбрать также и ее режим:
Синхронизация файлов - основной режим синхронизации в WinSCP. Реализуется алгоритм:
- Файлы, более новые в каталоге источника передаются в каталог приемника.
- Файлы, присутствующие в каталоге источника, но отсутствующие в каталоге приемника передаются в каталог приемника, если не включен режим Лишь имеющиеся файлы в настройках Параметры синхронизации .
- Файлы, существующие в каталоге приемника, но отсутствующие в каталоге источника могут быть удалены, если включен режим Удалять файлы в настройках Параметры синхронизации .
- При направлении синхронизации В обе стороны файлы, отсутствующие в противоположном каталоге считаются новыми и передаются, если не включен режим Лишь имеющиеся файлы . Удаление файлов при использовании данного направления синхронизации не выполняется.
Зеркальные файлы - различающиеся файлы (более новые и более старые) в каталоге источника передаются в каталог приемника.
Синхр. штампов времени - режим активен, если в удаленной и локальной системе существует возможность определения времени модификации файлов. Обычно, это подключение по протоколу SFTP. Никакие файлы не изменяются и не удаляются. Если один и тот же файл существует в каталоге источника и в каталоге приемника, можно изменить его отметку времени на время модификации либо источника, либо приемника по выбору пользователя. При направлении синхронизации В обе стороны обновляется отметка времени более старых файлов.
Running from Bash
When running WinSCP from a shell, where /switch is interpreted as a path, such as Git Bash, use a dash ( - ) instead of the slash ( / ) for switches. For example:
Кроме того, WinSCP предоставляет пользователю массу дополнительных возможностей:
- Возможность импорта настроек соединений из установленной в системе программы PuTTY. - Интеграция с Pageant (PuTTY Agent) с поддержкой авторизации по открытым ключам.
- Интеграция с операционной системой Windows (поддержка Drag&Drop, ярлыков, поддержка схем URL).
- Поддержка работы с любыми версиями протокола SSH (Secure Shell)
- Поддержка различных типов авторизации, как по паролю, так и с использованием ключей.
- Встроенный текстовый редактор.
- Возможность сохранять настройки соединений.
- Возможность работы с использованием файла конфигурации вместо хранения настроек в реестре, что позволяет использовать ее в переносимом варианте (Portable WinSCP).
- Плагин для поддержки протокола SFTP в программе FAR Manager .
- Возможность синхронизации каталогов локального и удаленного узлов.
Программа WinSCP абсолютно бесплатна и распространяется с открытым исходным кодом.
Автоматизация обмена данными с применением WinSCP
Программа WinSCP имеет поддержку командной строки и развитую систему создания и выполнения сценариев, что позволяет легко реализовать автоматизацию повторяющихся процессов приема и передачи данных.
"C:\Program Files (x86)\WinSCP\WinSCP.exe" /console
Для удобства работы с командной строкой WinSCP можно добавить путь к каталогу программы в переменную PATH стандартными средствами Windows либо средствами самой WinSCP: Параметры - Настройки - Интеграция - Добавить папку WinSCP в путь поиска . Поскольку добавление пути поиска WinSCP выполняется в системную переменную PATH, требуется запуск программы от имени администратора и перезагрузка Windows для применения изменений.
По умолчанию, в окне командной строки WinSCP используется кодировка UTF-8 . При желании, внешний вид и поведение консоли WinSCP можно настроить под свои предпочтения, например, включив выделение текста мышью и сменив цветовую палитру на черные символы на белом фоне.
Comments
Script Arguments
You can reference script arguments (passed on command-line using parameter /parameter ) using syntax %N% , where N is ordinal number of argument:1
Generating Script
Получение справки по конкретной команде WinSCP
Для получения дополнительной справочной информации по отдельным командам используется синтаксис:
help synchronize - получить подсказку по команде синхронизации. Результат выполнения:
Если первый параметр — 'local', синхронизирует локальный каталог с удалённым Если первый параметр — 'remote', синхронизирует удалённый каталог с локальным. Если первый параметр — 'both', взаимно синхронизирует каталоги. Если каталоги не указаны, синхронизируются текущие рабочие каталоги.
Примечание: подтверждения перезаписи для этой команды всегда отключены.
BR> параметры:
-preview - Только просмотр различий, не синхронизировать
-delete - Удалить устаревшие файлы
-mirror - Зеркалирование (синхронизирует старые файлы тоже). Игнорируется в режиме 'both'.
-criteria= - Критерии сравнения. Возможные значения: 'none', 'time', 'size' и 'either'. Игнорируется в режиме 'both'.
-permissions= - Установить права
-nopermissions - Сохранить права по умолчанию
-speed= - Ограничить скорость передачи
-transfer= - Режим передачи: binary, ascii, automatic
-filemask= - Задаёт файловую маску.
-resumesupport= - Настраивает поддержку возобновления. Возможные значения: 'on', 'off' или пороговая величина
действующие параметры: reconnecttime
synchronize remote -delete
synchronize both d:\www /home/martin/public_html
Checking Results
WinSCP executables return exit code 1 when any command is interrupted due to an error or any prompt is answered Abort (even automatically in batch mode). Otherwise it returns the exit code 0.
To further analyze results of scripted operations, you will find XML logging useful.
Получение справки по командам WinSCP
Большинство внутренних команд WinSCP имеют синтаксическое и смысловое сходство с командами командной строки Linux. Для получения встроенной справки используется команда help :
call - Выполняет заданную команду на сервере
cd - Изменяет папку на сервере
checksum - Вычисляет контрольную сумму файлов на сервере
chmod - Изменить права доступа к файлу на сервере
close - Закрывает соединение
cp - Дупликация/дубль удалённого файла
exit - Закрывает все соединения и завершает программу
get - Загрузить файл с сервера
help - Отображает справку
keepuptodate - Постоянно отслеживать изменения в локальной папке
lcd - Изменить локальную папку
lls - Отобразить содержимое локальной папки
ln - Создать ссылку на сервере
lpwd - Отобразить содержимое локальной папки
ls - Отобразить содержимое папки на сервере
mkdir - Создать папку на сервере
mv - Переименование/перенос файла на сервере
open - Соединение с сервером
option - Просмотреть/задать параметры сценария
put - Выгрузить файл на сервер
pwd - Печатает имя папки сервера
rm - Удалить файл с сервера
rmdir - Удалить папку с сервера
session - Показать список активных соединений или выбрать активное соединение
stat - Запрашивает атрибуты файла на сервере
synchronize - Синхронизировать папку на сервере с локальной
Timestamp
To use %TIMESTAMP. % on a command-line in a batch file, you need to escape the % by doubling it to %%TIMESTAMP. %% , to avoid a batch file interpreter trying to resolve the variable.
Установка и настройка WinSCP
Установка программы выполняется стандартным образом с рекомендуемыми параметрами или с возможностью выбора параметров. Выбираемые параметры можно изменить в любой момент времени после установки. Настройки WinSCP выполняются через меню Параметры - Настройки . Множество различных параметров настройки внешнего вида и поведения программы позволяют легко адаптировать ее под предпочтения конкретного пользователя.
Настройки по умолчанию, как правило, соответствуют предпочтениям обычного пользователя Windows, но при необходимости, можно например, изменить поведение программы при обрыве связи, отклонении сервером подключения по протоколу SFTP и т.п.
Executables
If you are going to run WinSCP from command-line often, you may wish to add WinSCP installation directory to search path.
Logging
With /log parameter you may turn on session logging to file specified by local path. In the path you can use the same patterns as in the logging preferences.
Use parameter /loglevel to change logging level. The value can be in range -1 … 2 (for Reduced, Normal, Debug 1 and Debug 2 logging levels respectively). Append additional * to enable password logging (e.g. /loglevel=2* ).1
Use parameter /logsize to configure log file size limit and log file rotation. Specify maximum size in bytes, optionally with K , M or G units. Optionally you can limit number of archived log files using count* prefix. For example /logsize=5*10M will limit log file size to 10 MB and will allow up to 5 archived logs.
With /xmllog parameter you may turn on XML logging to file specified by local path.2 In the path you can use the same patterns as in the logging preferences.
Use parameter /xmlgroups along with /xmllog , to group all XML log elements belonging to the same command under parent group element.
Mass-modification of sites
Use /batchsettings to mass-modify stored sites. The first argument is a mask to select sites to modify. Use a syntax of basic file masks. You can also use path mask to select sites based on their folders. The other arguments define new values for site settings. Use the same syntax as for /rawsettings .
For example to configure a proxy for all sites in a “clients” folder, use:
Syntax
Command-line parameters that include space(s) must be surrounded by double-quotes:
To use the double-quote as a literal, use two double-quotes sequentially. For example, the /command expects that each script command is surrounded by double quotes, so that it is passed as a single command-line argument. In addition, any script command argument that includes spaces is expected to be surrounded by double-quotes within the command (see doubling double-quotes):
When executing such command from PowerShell, you additionally have to escape the doubled inner double-quotes with ` (backtick) to prevent PowerShell from interpreting them on its own:4
To debug the quoting, enable session logging on level Debug 1 ( /loglevel=1 ). The log will show how WinSCP understands your command-line.
An argument that begins with a slash is considered a switch. To pass a parameter that itself starts with the slash in its syntax (i.e. a remote path like /root ), use the special switch // (two slashes) before the argument. The switch // denotes that all following arguments are not switches. Example:
Running a Script under a Different Account (e.g., Using a Scheduler)
If you are going to run the script under a different account (for example using the Windows Task Scheduler), make sure the script does not rely on a configuration settings that might differ on the other account. When using registry as configuration storage, the settings are accessible only for your Windows account. Ideally, make sure the script does not rely on any external configuration, to make it completely portable. Note that the configuration also includes verified SSH host keys and FTPS/WebDAVS TLS/SSL certificates.
Использование собственных сценариев WinSCP .
WinSCP позволяет пользователю получить уже готовые сценарии для выполнения большинства операций приема и передачи файлов. Например, при приеме файла от удаленного сервера в локальный каталог, после нажатия кнопки Получить можно открыть выпадающее меню Настройки передачи
Выбранный сценарий нужно сохранить в каком-нибудь файле в кодировке UTF-8 (UTF-16), например C:\Scripts\s1.txt и передать его на выполнение в виде параметра командной строки winscp:
Если каталог WinSCP не добавлен в пути поиска переменной PATH, по нужно указать полный путь к исполняемому файлу:
"C:\Program Files (x86)\WinSCP\winscp.com" /script=c:\Scripts\s1.txt /ini=nul
В процессе выполнения сценария, на экране отображается справочная информация:
При необходимости, можно включить протоколирование выполнения сценария в журнале, например, C:\Scripts\s1.log :
Для получения командного файла CMD Windows, необходимо выбрать Формат - Пакетный файл :
Содержимое командного файла копируется в буфер обмена и затем в командный файл, например, C:\Scripts\s1.bat . В полученный таким образом командный файл нужно внести некоторые изменения, указав действительные путь для файла журнала или отключить его ведение:
@echo off
"C:\Program Files (x86)\WinSCP\WinSCP.com" ^
/log="C:\Scripts\s1.log" /ini=nul ^
/command ^
"open ftp://anonymous@site.com/" ^
"cd /utility/Backplane Utility" ^
"lcd C:\Backplane_Utility" ^
"get backplane.zip" ^
"exit"
REM Ниже пример анализа кода возврата для оценки результата выполнения сценария set WINSCP_RESULT = %ERRORLEVEL%
if %WINSCP_RESULT% equ 0 (
echo Success
) else (
echo Error
)
exit /b %WINSCP_RESULT%
WinSCP возвращает ERRORLEVEL равный нулю, если сценарий выполнен успешно. Команда exit /b %WINSCP_RESULT% формирует ERRORLEVEL для данного командного файла, который может быть использован в других сценариях для анализа результатов его выполнения.
winscp.com /command "open ftp://anonymous@site.com/" "cd /Backplane_Utility" "lcd C:\Backplane_Utility" "get backplane.zip" "exit"
Полученный код для выполнения в среде PowerShell копируется в файл с расширением .ps1 , например - C:\Scripts\s1.ps1 и запускается на выполнение командой:
powershell -file C:\Scripts\s1.ps1
powershell -Command Set-ExecutionPolicy RemoteSigned
После выполнения данной команды, выполнение сценариев в среде PowerShell будет разрешено.
Полученный код сборки для PowerShell, может потребовать некоторой правки, в частности - указания полного пути для загрузки динамической библиотеки WinSCPnet.dll .
Sharing Configuration with Graphical Mode
In scripting/console mode, WinSCP shares configuration with graphical mode by default. While this can be useful in some cases, it can also be a disadvantage.
The disadvantage is that change to configuration in graphical mode may break your script (common example is enabling Existing files only option for synchronization). Also the script is not portable to other machines, when it relies on an external configuration.
If you want to protect your script from such inadvertent change or if you want to make the script portable, you should isolate its configuration from graphical mode explicitly.
The best way to do that is to configure all the options you need using script commands only ( option command, switches of other commands, session URL), or if no such command is available, using raw site settings and raw configuration. Finally force scripting mode to start with the default configuration using /ini=nul command-line parameter.
Alternatively export your configuration to a separate INI file and reference it using /ini= command-line parameter. Also consider setting the INI file read-only, to prevent WinSCP writing to it, when exiting. Particularly, if you are running multiple scripts in parallel, to prevent different instances of WinSCP trying to write it at the same time.
Auxiliary
When run with /update parameter, WinSCP only checks for its updates.
The parameter /info lists the supported SSH and TLS/SSL algorithms.
Parameter /help shows usage (overview similar to this).
Подключение к серверам
Программа WinSCP позволяет создавать и, по желанию пользователя – сохранять, профили подключений к различным серверам, поддерживающим соответствующие прикладные протоколы FTP, FTPS, SFTP, SCP, WebDAV, Amazon S3.
Для создания нового подключения используется кнопка Новое соединение - Новое подключение или комбинация клавиш CTRL+N . Далее необходимо выбрать параметры соединения – протокол передачи данных, наличие и свойства шифрования, имя сервера (IP-адрес) и номер порта, а также - учетную запись пользователя, используемую при подключении к указанному серверу:
После завершения настройки подключения, можно выполнить его сохранение нажав кнопку Сохранить Сохраненное соединение можно использовать в качестве соединения по умолчанию, которое будет выбираться при запуске программы WinSCP.
В нижней части окна со списком соединений размещены кнопки Инструменты и Действия предоставляющие пользователю дополнительные возможности по сохранению и восстановлению конфигурации подключений, взаимодействию с программой PuTTY , стиранию следов работы программы и вызову ее настроек.
Console/scripting mode
To run batch script either pass script file using /script parameter or specify the commands directly on command line using /command . In the latter case each following parameter is treated as single command. See syntax section and examples below for details how to deal with spaces and double-quotes.
If both /script and /command parameters are used, commands from script file are executed first. When the last command is not exit , regular non-batch mode follows.
Use parameter /parameter to specify list of arguments to be passed to script. It is recommended to escape the arguments with // switch.
With winscp.exe , if /console parameter is not used along with /script or /command , the script/command is executed without visual feedback (window).
Configuration
With /ini parameter you may specify local path to configuration INI file. It effectively disables using registry as configuration storage. If the file does not exist, default configuration will be used and the file will be created.
Use nul instead of path to force WinSCP start with its default configuration and not save the configuration on exit.
With /rawconfig parameter you can set any configuration settings using raw format as in an INI file. E.g. to configure an external IP address use /rawconfig Interface\ExternalIpAddress=198.51.100.10 . The parameter must come after a session URL (if any). The configuration set this way is preserved.
With /rawtransfersettings you can set any transfer settings using raw format as in an INI file. E.g. to enable preserving of directory timestamps, use /rawtransfersettings PreserveTimeDirs=1 . The configuration set this way is preserved. In scripting, it is better to use -rawtransfersettings switch of individual scripting commands, like get , put , etc.
Commands Syntax
All WinSCP commands have syntax:
Command Parameters with Spaces
Command parameters that include space(s) have to be surrounded by double-quotes. To use double-quote literally, double it:
Note that when you are specifying commands on command-line using /command , you need to surround each command by double-quote and escape the in-command double-quotes by doubling them.
To debug the quoting, enable session logging on level Debug 1 ( /loglevel=1 ). The log will show how WinSCP understands both your command-line and individual scripting commands.
Using Scripting
When running commands specified using /script or /command , batch mode is used implicitly and overwrite confirmations are turned off. In an interactive scripting mode, the user is prompted in the same way as in GUI mode. To force batch mode (all prompts are automatically answered negatively) use the command option batch abort . For batch mode it is recommended to turn off confirmations using option confirm off to allow overwrites (otherwise the overwrite confirmation prompt would be answered negatively, making overwrites impossible).
Multiple sessions can be opened simultaneously. Use the session command to switch between them.
Note that the first connection to an SSH server requires verification of the host key. Also the first connection to FTPS or WebDAVS host with certificate signed by untrusted authority requires verification of the certificate.
Operations
The following parameters can be used to create a shortcut that initiates operation in GUI mode. They are not intended for automation, for that see scripting.
Use /edit to open a remote file in WinSCP internal editor.
Use /browse to select the specified file in (both) file panel(s). The switch can also be used together with a file URL for the same effect, overriding the default download action.
With /synchronize or /keepuptodate parameter WinSCP performs Synchronize or Keep remote directory up to date commands respectively on the specified session and directories. A dialog to set options is displayed first.
With /upload parameter WinSCP uploads specified files to initial remote directory of session.3 A dialog to set options is displayed first.
Use /defaults parameter along with /upload , /synchronize or /keepuptodate to skip the settings dialog and start the operation straight away with default settings. Alternatively you can specify a number of seconds, to actually show the settings dialogs, but have them automatically submit after the specified time elapses.
Use the /refresh parameter to reload remote panel of all running instances of WinSCP. If a session is specified on command-line, only instances that have that session as active are refreshed. If a path is specified after the /refresh , only that directory is refreshed.
It is recommended to escape the arguments with // switch.
Example
Save the script to the file example.txt . To execute the script file use the following command.
For simple scripts you can specify all the commands on command-line using /command switch:
In Windows batch file, you can use ^ to split too long command-line to separate lines by escaping following new-line character:
The first syntax opens the site. To open site, stored in folder, use path syntax “folder/site”. You can also open workspace or all sites in site folder.
The second creates the session specified by session URL and optionally by initial remote path. If the remote path is not ended by slash ( / ), it is treated as path to file (or even directory) that should be downloaded.
The parameter /sessionname specifies a custom name of the session to be used instead of the automatically generated name in a format username@hostname or to override the name of the saved site.
If there’s already idle WinSCP instance running, the session(s) opens in the existing instance. To force session open in new instance of WinSCP, use /newinstance parameter.
The parameter /privatekey specifies a local path to an SSH private key file. If the key file is encrypted, use the /passphrase to specify its passphrase.
You can use the parameters /username and /password as an alternative way to specify the credentials. The credentials are normally part of the session URL. Using these switches has the advantage of not needing to URL-encode special characters.
The parameter /clientcert specifies a local path to FTPS or WebDAVS TLS/SSL client certificate. If the certificate is encrypted, use the /passphrase to specify its passphrase.
When a FTPS or WebDAVS server TLS/SSL certificate is not trusted (typically a self-signed certificate), use the parameter /certificate to specify the fingerprint of the untrusted certificate. It makes WinSCP trust the certificate. Several alternative fingerprints can be separated by a semicolon.
The parameter /passive enables a passive ( =on ) or an active ( =off ) transfer mode (FTP protocol only).
The parameters /implicit , and /explicit enable respective method of invoking FTPS.
The parameter /timeout specifies server response timeout.
The parameter /rawsettings allows configuring any site settings using raw format as in an INI file. E.g. to enable an SSH compression and an agent forwarding, use /rawsettings Compression=1 AgentFwd=1 . The parameter must come after the session URL (if any).
When using scripting, use the open command (and its switches) instead.
Использование планировщика заданий для автоматизации выполнения сценариев
Для запуска Планировщика заданий можно воспользоваться поиском в Windows, перейти в “Панель управления” - “Администрирование” - “Планировщик заданий”, либо выполнить команду taskschd.msc .
Библиотека планировщика заданий , отображаемая в левой части окна оснастки планировщика, имеет довольно непростую иерархическую структуру, поэтому, можно создать отдельную папку, с использованием контекстного меню, вызываемого правой кнопкой мышки и пункта Создать папку , ввести имя папки, и в дальнейшем, именно в ней создавать свои тестовые или рабочие задания.
Для создания задач планировщика могут использоваться два мастера, вызываемые в режимах Создать простую задачу и Создать задачу . При создании простой задачи используется минимальный набор параметров, не предусматривающий наличие множественных условий выполнения и множественных действий. Для запуска сценариев WinSCP по расписанию, вполне достаточно создания простой задачи.
Новую задачу можно создать с использованием пункта меню Действие - Создать простую задачу либо через контекстное меню, вызываемое правой кнопкой мышки на уровне созданной папки в библиотеке планировщика, либо на уровне "Библиотека планировщика", если такая папка не нужна. После чего запускается мастер создания задачи:
На шаге Общие введите имя задания и его описание. Имя, для примера - DownloadFiles , а описание "Download files from site.com". Описание может быть произвольным текстом, но желательно, чтобы оно отражало суть создаваемой задачи.
На шаге Триггер выполняется настройка условий, при возникновении которых, будет запущена создаваемая задача.
На шаге Действия в качестве действия выбираем Запуск программы , в виде которой будет выступать созданный ранее командный файл Script1.bat , который нужно выбрать с использованием кнопки Обзор… .
На шаге Завершение нажмите кнопку Готово и задание будет создано. Настройки созданного задания можно изменить в любое время при наличии у пользователя соответствующих прав.
Подскажите, пожалуйста, как мне получить список файлов на sftp-сервере в указанной папке. Через командную строку получается так:
"C:\Program Files (x86)\WinSCP\WinSCP.exe" /console /command "option batch abort" "open My_SFTP" "ls file/1 " и я в окошке могу посмотреть список, а вот как мне в 1с получить этот список? Сейчас делаю так, но до конца не знаю как сделать:
Чтение= Новый ЧтениеТекста("result");
Ты вывод в текстовый файл перенаправляешь.
А вообще WinSCP вроде сценарии поддерживал. Лучше пиши из 1С сценарий и передавай его в качестве параметра WinSCP.
Вот только не WinSCP.exe, а WinSCP.com тогда ЗапуститьПриложение("cmd.exe /c " + СтрокаПрограммы + " > result &2>1 "); в result будет писать вывод, а не пустую строку.
(8) awk, сделал так, тоже самое, пустой файл cmd.exe /c "" "C:\Program Files (x86)\WinSCP\WinSCP.exe" /console /command "option batch abort" "open My_SFTP" "ls file/1" / > result " get result d:\1"
через WinSCP.com, тоже пустой файл: md.exe /c "" "C:\Program Files (x86)\WinSCP\WinSCP.com" /console /command "option batch abort" "open My_SFTP" "ls file/1" / > d:\1\result
Хотя если открываю командную строку и прописую команду "C:\Program Files (x86)\WinSCP\WinSCP.com" /console /command "option batch abort" "open My_SFTP" "ls file/1" / > d:\1\result, то все отлично.
я когда работал с SecureFTP я чуть по другому делал
ставил программку FTPDrive или что-то аналогичное можно
в ней прописывал SecureFTP как локальный диск
и из 1с обращался уже к файлам как к локальным файлам.
и все работало, правда подо мной только
ЗапуститьПриложение("cmd.exe /c ""C:\Program^ Files (x86)\WinSCP\WinSCP.exe /console /command option^ batch^ abort open^ My_SFTP ls^ file/1"" > result.txt &2>1", d:\1);
С кавычками бяда. Можно попробовать экранировать пробел символом ^
(12) Sanechichek,
1. Я перепутал, не &2>1, а 2>&1 Перенаправление STDERR в STDOUT
2. Создай bat файл и запускай его:
ЗапуститьПриложение(".bat", каталог, истина)
(13) awk, создает файл и записывает в него такую строчку "Синтаксическая ошибка в имени файла, имени папки или метке тома."
(14) Sanechichek, Я тебе напишу то же самое: "Синтаксическая ошибка в имени файла, имени папки или метке тома." И я ничуть не издеваюсь. Где-то не экранированный пробел.
Verifying the Host Key or Certificate in Script
The first connection to an SSH server requires verification of the host key. To automate the verification in script, use -hostkey switch of open command to accept the expected host key automatically.
You can find the key fingerprint on Server and Protocol Information Dialog. You can also copy the key fingerprint to clipboard from the confirmation prompt on the first (interactive) connection using Copy key fingerprints to clipboard command (in the script, use SHA-256 fingerprint of the host key only). Learn more about obtaining host key fingerprint.
FTPS/WebDAVS TLS/SSL certificate signed by untrusted authority may also need to be verified. To automate the verification in script, use -certificate switch of open command to accept the expected certificate automatically.
Private key conversion and modification
Use the /keygen switch to convert private keys from other formats to a PuTTY .ppk format or to change their passphrase or comment.
When converting the key from other format, you need to specify an output key path using the /output switch. When modifying a PuTTY key, the existing file is overwritten, if /output is not specified.
Use /changepassphrase switch to change the key passphrase.
Use /comment switch to change the key comment.
For example, to convert key mykey.pem from OpenSSH format to mykey.ppk in PuTTY format and set its comment:
To change the passphrase of existing mykey.ppk :
For a compatibility with *nix puttygen , the -o , -P and -C switches are understood as aliases to /output , /changepassphrase and /comment respectively. So, for features supported by WinSCP, you can use the same arguments as for puttygen , just prefixed with /keygen :
The Console Interface Tool
Case Sensitivity of File Names
Note that WinSCP treats filenames in case sensitive manner. So even if your server treats filenames in case insensitive manner, make sure you specify case properly.2
Environment Variables
You can use environment variables in the commands, with syntax %NAME% :1
Note that variable expansion is different than in Windows batch files:
- You cannot use any string processing syntax.
- You cannot use dynamic/pseudo environment variables, such as %DATE% or %RANDOM% .
- References to undefined variables are kept intact (not removed).
- You can use %WINSCP_PATH% to refer to WinSCP executable path.
Commands
The following commands are implemented.
To see help for the command, read respective documentation article below or type command help directly in console.
Command | Description |
---|---|
call | Executes arbitrary remote shell command |
cd | Changes remote working directory |
checksum | Calculates checksum of remote file |
chmod | Changes permissions of remote file |
close | Closes session |
cp | Duplicates remote file |
echo | Prints message onto script output |
exit | Closes all sessions and terminates the program |
get | Downloads file from remote directory to local directory |
help | Displays help |
keepuptodate | Continuously reflects changes in local directory on remote one |
lcd | Changes local working directory |
lls | Lists the contents of local directory |
ln | Creates remote symbolic link |
lpwd | Prints local working directory |
ls | Lists the contents of remote directory |
mkdir | Creates remote directory |
mv | Moves or renames remote file |
open | Connects to server |
option | Sets or shows value of script options |
put | Uploads file from local directory to remote directory |
pwd | Prints remote working directory |
rm | Removes remote file |
rmdir | Removes remote directory |
session | Lists connected sessions or selects active session |
stat | Retrieves attributes of remote file |
synchronize | Synchronizes remote directory with local one |
Читайте также: