1

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

Это моя настоящая работа


Хотите скопировать файл с именем "Friday.bat" из ftp://172.16.3.132 (с именем пользователя и паролем):

@echo off
@ftp -i -s:"%~f0"&GOTO:EOF
open 172.16.3.132
mmftp
((((password entered here)))))
binary
get Friday.bat 
pause

Результат:


ftp> @echo off
ftp> @ftp -i -s:"%~f0"&GOTO:EOF
Invalid command.
ftp> open 172.16.3.132
Connected to 172.16.3.132.
220 Welcome to ABL FTP service.
User (172.16.3.132:(none)):
331 Please specify the password.

230 Login successful.
ftp> binary
200 Switching to Binary mode.
ftp> get Friday.bat
200 PORT command successful. Consider using PASV.
550 Failed to open file.
ftp> pause

Наконец, файл с именем Friday.bat копируется в мою локальную систему с 0 байтами, и я не могу его открыть.

4 ответа4

0

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

Если это ничего не делает, наиболее вероятная причина, и я верю, что это происходит из-за того, что ваш брандмауэр мешает вам загрузить файл. Попробуйте отключить его и попробуйте снова.

0

Вы пытались использовать PASV (пассивный режим), как показывает ошибка? Пассивный режим помогает FTP-клиенту намного лучше преодолевать брандмауэры и NAT-устройства (маршрутизаторы), так как активный режим пытается открыть порт для отправки вам данных (что не удастся, если вы находитесь за маршрутизатором), а в пассивном режиме вы фактически отстой данные вниз.

Включить пассивный режим так же просто, как бинарный, и вы должны сделать это так:

@echo off
@ftp -i -s:"%~f0"&GOTO:EOF
open 172.16.3.132
mmftp
((((password entered here)))))
binary
passive
get Friday.bat 
pause
0

Опираясь на этот ответ, я думаю, что вы либо неправильно аутентифицировались, либо не имеете прав для чтения файла.

Кроме того, я бы порекомендовал вам использовать ожидаемую автоматизацию интерактивных приложений. Этот инструмент работает очень хорошо. Вы можете прочитать эту главу, чтобы ознакомиться с ней. Если этого недостаточно, уверяю вас, что это старый (стабильный) инструмент со множеством примеров в сети.

0

Вы против использования стороннего инструмента, такого как wget.exe, инструмента Unix для Windows? (Скачать здесь или здесь)

Чтобы упростить его, вы все равно можете использовать скрипт с быстрой загрузкой одного файла или всего сайта с помощью одной строки кода.

wget.exe --ftp-user=USERNAME --ftp-password=PASSWORD -Ofriday.bat 172.16.3.132

Если его нет в корневом каталоге, добавьте wget.exe -r для рекурсивного сканирования файла. Вы можете добавить уровень рекурсии или хост хоста.

Просто пища для размышлений: если вам не нужно использовать ftp.exe , брандмауэры и другие программы обеспечения безопасности не имеют проблем с пассивным - wget выполняет всю работу по портированию.

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