Вопрос по scripting, winscp, sftp – WinSCP - Как распознать, если файл был успешно передан

1

Я использую WinSCP для автоматической загрузки файлов через SFTP. Я включил журнал отладки на уровне 1. Можно ли узнать, был ли файл успешно загружен? Спасибо.

Часть файла журнала:

. 2012-08-30 15:30:06.539 File: "C:\files\file_20120830.gpg"
. 2012-08-30 15:30:06.539 Copying "C:\files\file_20120830.gpg" to remote directory started.
. 2012-08-30 15:30:06.539 Binary transfer mode selected.
. 2012-08-30 15:30:06.539 Checking existence of file.
> 2012-08-30 15:30:06.539 Type: SSH_FXP_LSTAT, Size: 50, Number: 263
. 2012-08-30 15:30:06.539 Sent 54 bytes
. 2012-08-30 15:30:06.539 There are 0 bytes remaining in the send buffer
. 2012-08-30 15:30:06.539 Waiting for another 4 bytes
. 2012-08-30 15:30:06.555 Detected network event
. 2012-08-30 15:30:06.555 Received 33 bytes (0)
. 2012-08-30 15:30:06.555 Read 4 bytes (29 pending)
. 2012-08-30 15:30:06.555 Read 29 bytes (0 pending)
< 2012-08-30 15:30:06.555 Type: SSH_FXP_STATUS, Size: 29, Number: 263
< 2012-08-30 15:30:06.555 Status code: 2
. 2012-08-30 15:30:06.555 Checking existence of partially transfered file.
> 2012-08-30 15:30:06.555 Type: SSH_FXP_LSTAT, Size: 59, Number: 519
. 2012-08-30 15:30:06.555 Sent 63 bytes
. 2012-08-30 15:30:06.555 There are 0 bytes remaining in the send buffer
. 2012-08-30 15:30:06.555 Waiting for another 4 bytes
. 2012-08-30 15:30:06.570 Detected network event
. 2012-08-30 15:30:06.570 Received 33 bytes (0)
. 2012-08-30 15:30:06.570 Read 4 bytes (29 pending)
. 2012-08-30 15:30:06.570 Read 29 bytes (0 pending)
< 2012-08-30 15:30:06.570 Type: SSH_FXP_STATUS, Size: 29, Number: 519
< 2012-08-30 15:30:06.570 Status code: 2
. 2012-08-30 15:30:06.570 Opening remote file.
> 2012-08-30 15:30:06.570 Type: SSH_FXP_OPEN, Size: 75, Number: 771
. 2012-08-30 15:30:06.570 Sent 79 bytes
. 2012-08-30 15:30:06.570 There are 0 bytes remaining in the send buffer
. 2012-08-30 15:30:06.570 Waiting for another 4 bytes
. 2012-08-30 15:30:06.586 Detected network event
. 2012-08-30 15:30:06.586 Received 31 bytes (0)
. 2012-08-30 15:30:06.586 Read 4 bytes (27 pending)
. 2012-08-30 15:30:06.586 Read 27 bytes (0 pending)
< 2012-08-30 15:30:06.586 Type: SSH_FXP_HANDLE, Size: 27, Number: 771
. 2012-08-30 15:30:06.586 Write request offset: 0, len: 4096
> 2012-08-30 15:30:06.586 Type: SSH_FXP_WRITE, Size: 4135, Number: 1286
. 2012-08-30 15:30:06.586 Sent 4139 bytes
. 2012-08-30 15:30:06.586 There are 0 bytes remaining in the send buffer
. 2012-08-30 15:30:06.586 Write request offset: 4096, len: 4096
> 2012-08-30 15:30:06.586 Type: SSH_FXP_WRITE, Size: 4135, Number: 1542
. 2012-08-30 15:30:06.586 Sent 4139 bytes
. 2012-08-30 15:30:06.586 There are 0 bytes remaining in the send buffer
. 2012-08-30 15:30:06.586 Write request offset: 8192, len: 4096
> 2012-08-30 15:30:06.586 Type: SSH_FXP_WRITE, Size: 4135, Number: 1798
. 2012-08-30 15:30:06.586 Sent 4139 bytes
. 2012-08-30 15:30:06.586 There are 0 bytes remaining in the send buffer
. 2012-08-30 15:30:06.586 Write request offset: 12288, len: 4096
> 2012-08-30 15:30:06.586 Type: SSH_FXP_WRITE, Size: 4135, Number: 2054
. 2012-08-30 15:30:06.586 Sent 4139 bytes
. 2012-08-30 15:30:06.586 There are 0 bytes remaining in the send buffer
. 2012-08-30 15:30:06.586 Write request offset: 16384, len: 4096
> 2012-08-30 15:30:06.586 Type: SSH_FXP_WRITE, Size: 4135, Number: 2310
. 2012-08-30 15:30:06.586 Sent 4139 bytes
. 2012-08-30 15:30:06.586 There are 0 bytes remaining in the send buffer
. 2012-08-30 15:30:06.586 Write request offset: 20480, len: 4096
> 2012-08-30 15:30:06.586 Type: SSH_FXP_WRITE, Size: 4135, Number: 2566
. 2012-08-30 15:30:06.586 Sent 4139 bytes
. 2012-08-30 15:30:06.586 There are 0 bytes remaining in the send buffer
. 2012-08-30 15:30:06.586 Write request offset: 24576, len: 4096
> 2012-08-30 15:30:06.586 Type: SSH_FXP_WRITE, Size: 4135, Number: 2822
. 2012-08-30 15:30:06.602 Sent 4139 bytes
. 2012-08-30 15:30:06.602 There are 0 bytes remaining in the send buffer
. 2012-08-30 15:30:06.602 Write request offset: 28672, len: 98261
> 2012-08-30 15:30:06.602 Type: SSH_FXP_WRITE, Size: 98300, Number: 3078
. 2012-08-30 15:30:06.617 Sent 98304 bytes
. 2012-08-30 15:30:06.617 There are 33208 bytes remaining in the send buffer
. 2012-08-30 15:30:06.617 Detected network event
. 2012-08-30 15:30:06.617 Received 28 bytes (0)
. 2012-08-30 15:30:06.617 Read 4 bytes (24 pending)
. 2012-08-30 15:30:06.617 Read 24 bytes (0 pending)
< 2012-08-30 15:30:06.617 Type: SSH_FXP_STATUS, Size: 24, Number: 1286
< 2012-08-30 15:30:06.617 Status code: 0
. 2012-08-30 15:30:06.617 There are 33208 bytes remaining in the send buffer, need to send at least another 440 bytes
. 2012-08-30 15:30:06.633 Detected network event
. 2012-08-30 15:30:06.633 There are 33208 bytes remaining in the send buffer
. 2012-08-30 15:30:06.633 There are 33208 bytes remaining in the send buffer, need to send at least another 440 bytes
. 2012-08-30 15:30:06.633 Detected network event
. 2012-08-30 15:30:06.633 There are 33208 bytes remaining in the send buffer
. 2012-08-30 15:30:06.633 There are 33208 bytes remaining in the send buffer, need to send at least another 440 bytes
. 2012-08-30 15:30:06.633 Detected network event
. 2012-08-30 15:30:06.633 Received 28 bytes (0)
. 2012-08-30 15:30:06.633 Read 4 bytes (24 pending)
. 2012-08-30 15:30:06.633 Read 24 bytes (0 pending)
< 2012-08-30 15:30:06.633 Type: SSH_FXP_STATUS, Size: 24, Number: 1542
< 2012-08-30 15:30:06.633 Status code: 0

Ваш Ответ

3   ответа
1

Ниже приведен пакетный файл, который я использую для синхронизации с ftp-сервера в локальный каталог, удаляя любые изменения на локальной стороне. Пакетный файл также сохраняетXML log всех переводов.

@echo off
cd %programfiles(x86)%\winscp\
start /b winscp.exe /log="C:\Sync\logs\[email protected]!T.xml" /xmlgroups /command "open   ftp://username:[email protected]" "synchronize local -delete -criteria=size     ""C:\Users\jdoe\Documents\Synced Docs"" / 

Параметр, с которым вы хотите поиграть, это & quot;winscp.exe /log="C:\Sync\[email protected]!T.xml" /xmlgroups& Quot;

2

Цитируем WinSCP FAQКак мне узнать, что скрипт успешно выполнен?:

You can tell the result of script by WinSCP exit code. Code 0 indicates success, while 1 indicates an error. For more details refer to scripting documentation.

Batch script (specified using /script or /command command-line switches) terminates with code 1 immediately once any error occurs. You can change this using option batch command.

To find out why the script failed, inspect session log.

For an example see a guide to transfer automation or the example on retrying s/connection attempt.

If you need a better control of error handling, consider using WinSCP .NET assembly instead (e.g. from a PowerShell script).

Автор всегда знает лучше :) Спасибо, Мартин, за советы и за ваш замечательный инструмент! culter
1

WinSCP имеет возможность записывать все ваши операции вXML-журнал. you can then analyze the log to know exactly what happened during the session.

Похожие вопросы