Я использую Filezilla-Server на сервере Windows 2012R2 Standard. Я пытаюсь войти и отправить файлы с другого сервера Windows 2012R2 Standard.

Я запускаю этот командный файл:

@echo off
cls
echo open xxx.xxx.xxx.xxx> ftpcmd.dat
echo user xxxxxxxxx>> ftpcmd.dat
echo xxxxxxxx>> ftpcmd.dat
echo bin>> ftpcmd.dat
echo lcd %1>> ftpcmd.dat
echo lcd %1zip>> ftpcmd.dat
echo pwd>> ftpcmd.dat
echo mdelete *>> ftpcmd.dat
echo mkdir %1>> ftpcmd.dat
echo cd %1>> ftpcmd.dat
echo mput *.*>> ftpcmd.dat
echo quit>> ftpcmd.dat
@echo on
ftp -i -n -s:ftpcmd.dat 

Вот результаты, когда я запускаю его:

C:\backup>ftp -i -n -s:ftpcmd.dat
ftp> open xxx.xxx.xxx.xxx
Connected to xxx.xxx.xxx.xxx.
220-FileZilla Server version 0.9.44 beta
220-written by Tim Kosse (tim.kosse@filezilla-project.org)
220 Please visit http://sourceforge.net/projects/filezilla/
ftp> user xxxxxxxxx
331 Password required for xxxxxxxxx

230 Logged on
ftp> bin
200 Type set to I
ftp> lcd ppsvm
Local directory now C:\backup\ppsvm.
ftp> lcd ppsvmzip
Local directory now C:\backup\ppsvm\ppsvmzip.
ftp> pwd
257 "/" is current directory.
ftp> mdelete *
_   <-- it just sticks here and goes nowhere

Как вы можете видеть из ^ выше, он останавливается на mdelete и больше ничего не делает.

Я проверил журнал Filezilla-Server, и он показывает это:

8:28:21 AM - (not logged in)> Connected, sending welcome message...
8:28:21 AM - (not logged in)> 220-FileZilla Server version 0.9.44 beta
8:28:21 AM - (not logged in)> 220-written by Tim Kosse (tim.kosse@filezilla-project.org)
8:28:21 AM - (not logged in)> 220 Please visit http://sourceforge.net/projects/filezilla/
8:28:21 AM - (not logged in)> USER xxxxxxxxxxxxx
8:28:21 AM - (not logged in)> 331 Password required for xxxxxxxxxxxxx
8:28:21 AM - (not logged in)> PASS ****************
8:28:21 AM - xxxxxxxxxxxxx> 230 Logged on
8:28:21 AM - xxxxxxxxxxxxx> TYPE I
8:28:21 AM - xxxxxxxxxxxxx> 200 Type set to I
8:28:21 AM - xxxxxxxxxxxxx> XPWD
8:28:21 AM - xxxxxxxxxxxxx> 257 "/" is current directory.
8:28:21 AM - xxxxxxxxxxxxx> TYPE A
8:28:21 AM - xxxxxxxxxxxxx> 200 Type set to A
8:28:21 AM - xxxxxxxxxxxxx> PORT xxx,xxx,xxx,xxxx,xxxx,xxxx
8:28:21 AM - xxxxxxxxxxxxx> 200 Port command successful
8:28:21 AM - xxxxxxxxxxxxx> NLST *
8:28:21 AM - xxxxxxxxxxxxx> 150 Opening data channel for directory listing of "/*"
8:28:32 AM - xxxxxxxxxxxxx> 425 Can't open data connection for transfer of "/*"

У меня есть Filezilla-Server, добавленный в настройки брандмауэра:

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

Я в растерянности относительно того, что происходит. У кого-нибудь есть предложения?

1 ответ1

2

Активный FTP является двунаправленным (управляющее соединение идет клиент-> srv, соединение для передачи данных srv -> клиент), поэтому ему необходимо разрешить входящие соединения через определенные порты для сервера и клиента.

Вот цитата из FileZilla wiki (в которой есть хорошее объяснение внутренних частей ftp)

Что отличает FTP от большинства других протоколов, так это использование вторичных соединений для передачи файлов. Когда вы подключаетесь к FTP-серверу, вы фактически делаете два подключения. Сначала устанавливается так называемое управляющее соединение, по которому передаются команды FTP и их ответы. Затем, чтобы передать файл или список каталогов, клиент отправляет определенную команду через управляющее соединение, чтобы установить соединение для передачи данных.

(...)

В активном режиме клиент открывает сокет на локальном компьютере и сообщает свой адрес серверу с помощью команды PORT. Как только клиент выполнит команду для передачи файла или списка, сервер подключится к адресу, указанному клиентом.

Вы также найдете информацию о конфигурации брандмауэра для клиента и сервера в вики.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .