it-swarm.com.ru

Мой пакетный сценарий FTP застрял на "200 PORT команда успешна" и не загружает файлы на сервер

Я перепробовал все, что нашел в результатах поиска Google 

Команда 200 PORT успешна

но ничего не помогло.

Может кто-нибудь помочь решить эту проблему, пожалуйста?

Код "runScript.bat:

ftp -s:"C:\automation\fileup.bat" myserver.com

Код "fileup.bat:

username
password
ascii
cd "/public_html/reports/"
lcd "C:\automation\tests\HtmlReporter"
Prompt
mput *
disconnect
close
bye

Журнал консоли:

C:\automation>ftp -s:"C:\automation\fileup.bat" myserver.com
Connected to myserver.com.
220---------- Welcome to Pure-FTPd [privsep] ----------
220-You are user number 7 of 500 allowed.
220-Local time is now 04:40. Server port: 21.
220-This is a private system - No anonymous login
220 You will be disconnected after 3 minutes of inactivity.
User (server26.000webhost.com:(none)):
331 User username OK. Password required

230-OK. Current restricted directory is /
230-449 files used (4%) - authorized: 10000 files
230 16742 Kbytes used (1%) - authorized: 1536000 Kb
ftp> ascii
200 TYPE is now ASCII
ftp> cd "/public_html/reports/"
250 OK. Current directory is /public_html/reports
ftp> lcd "C:\automation\tests\HtmlReporter"
Local directory now C:\automation\tests\HtmlReporter.
ftp> Prompt
Interactive mode Off .
ftp> mput *
200 PORT command successful

Ошибка относительно WinSCP (для Мартина) ":

C:\Users\idan>cd c:\automation\

c:\automation>runFTP.bat

c:\automation>winscp.com /command     "open ftp://user:[email protected]/"     "cd /public_html/reports/"     "lcd C:\automation\tests\HtmlRepo
rter"     "put *"     "exit"
'winscp.com' is not recognized as an internal or external command,
operable program or batch file.

c:\automation>
7
Idan E

Это похоже на типичную проблему с активным режимом FTP. Сервер не может подключиться к вашему компьютеру, чтобы установить соединение для передачи данных.

Обычно это происходит, так как в настоящее время большинство клиентских компьютеров находятся за брандмауэром или NAT, или обоими, что мешает активному режиму FTP работать. Чтобы активировать активный режим, вам необходимо открыть брандмауэр (не рекомендуется) и/или настроить NAT правила маршрутизации. 

Смотрите мою статью о режимах FTP и настройке сети для активного режима .


Или вы используете пассивный режим FTP. Клиент Windows ftp.exe не поддерживает пассивный режим, что делает его довольно бесполезным в наши дни.

Поэтому вам нужно использовать другой FTP-клиент из командной строки. Большинство клиентов FTP поддерживают пассивный режим.

Например, с WinSCP ваш runScript.bat будет выглядеть так:

winscp.com /command ^
    "open ftp://username:[email protected]/" ^
    "cd /public_html/reports/" ^
    "lcd C:\automation\tests\HtmlReporter" ^
    "put *" ^
    "exit"

Обратите внимание, что WinSCP по умолчанию работает в пассивном режиме.

Подробности см. В руководствах WinSCP для:

(Я автор WinSCP)

11
Martin Prikryl

У меня была точно такая же проблема («200 команд PORT успешно» застряла на экране навсегда), и я смог ее решить.

Во-первых, в Интернете много сообщений о том, что Windows ftp.exe не поддерживает пассивный режим. Это неправда:

ftp> цитата пасва

227 Вход в пассивный режим

В моем случае у меня был сервер Windows 2012 R2 с реальным IP. Переключение в пассивный режим не решило проблему, я все еще застрял на «200 команд PORT успешно». В то же время WinSCP работал нормально. Решением было создать правило для входящего брандмауэра, которое разрешало бы внешние подключения с FTP-сервера к локальному ftp.exe.

1
Sergei Tche