Мой FTP-пакетный скрипт застрял на "200 PORT command successful" и не загружает файлы на сервер

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

200 порт команда успешно

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

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

код " runScript.летучая мышь:

ftp -s:"C:automationfileup.bat" myserver.com

код "fileup.летучая мышь:

username
password
ascii
cd "/public_html/reports/"
lcd "C:automationtestsHtmlReporter"
prompt
mput *
disconnect
close
bye

консоль лог:

C:automation>ftp -s:"C:automationfileup.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:automationtestsHtmlReporter"
Local directory now C:automationtestsHtmlReporter.
ftp> prompt
Interactive mode Off .
ftp> mput *
200 PORT command successful

ошибка, касающаяся WinSCP (для Martin)":

C:Usersidan>cd c:automation

c:automation>runFTP.bat

c:automation>winscp.com /command     "open ftp://user:pass@myserver.com/"     "cd /public_html/reports/"     "lcd C:automationtestsHtmlRepo
rter"     "put *"     "exit"
'winscp.com' is not recognized as an internal or external command,
operable program or batch file.

c:automation>

2 ответов


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

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

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


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

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

например помощью WinSCP код runScript.bat будет так:

winscp.com /command ^
    "open ftp://username:password@myserver.com/" ^
    "cd /public_html/reports/" ^
    "lcd C:\automation\tests\HtmlReporter" ^
    "put *" ^
    "exit"

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

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

(я автор WinSCP)


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

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

ftp> цитата pasv

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

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