4

Мне нужно загружать файлы через FTP из командной строки. У меня есть эта информация: URL, имя пользователя, пароль, порт и тот факт, что я должен использовать пассивный режим.

Как загрузить файл с учетом этой информации?

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

3 ответа3

6

Там много клиентов CLI (командной строки). Наиболее распространенным является просто ftp . У вас есть <host> , <port> , <username> , <pass> и "пассивный режим". Используя ftp вы должны сделать:

ftp -p <host> <port>

-p означает "использовать пассивный режим". Затем вас спросят о вашем имени пользователя и пароле. После успешного входа в систему (сервер сообщит вам об этом), вы можете дать несколько команд. Введите help и нажмите "enter", чтобы получить список доступных команд. Вы можете использовать, например, команды cd , ls , mkdir ftp, чтобы изменить рабочий каталог (на сервере), просмотреть его содержимое и создать новый каталог. Если до запуска ftp вы находились в том же каталоге, что и файлы, которые вы хотите отправить, вы можете использовать команду put или mput для начала фактической передачи. Первая команда отправляет один файл, вторая - несколько файлов, используя глобирование (например, mput *pdf отправит все файлы PDF в текущем каталоге). Чтобы получить простую справку о команде, вы можете использовать help <command> из приложения ftp . Я бы сказал, что этого достаточно для начала. В остальном используйте man ftp или info ftp . Для завершения сеанса FTP введите bye . Есть и другие способы сделать это, но я думаю, что это просто элегантно :).

Что касается других клиентов, здесь были указаны некоторые интересные варианты, но я лично использую lftp . Это просто солидный, хороший, гибкий и простой в использовании FTP-клиент. Если вы предпочитаете более визуальный подход, все еще находясь под командной строкой, вы можете mc или "Midnight Command". Это общий файловый менеджер приложения, использующий парадигму Norton Commander, но его также можно использовать для доступа к FTP-серверам.

3

Я очень рекомендую ncftp 's ncftpput. Это очень хорошо для сценариев и удобно для такого рода вещей.

2

Нет проблем в этом. Есть много примеров на Gist . Просто зайдите на этот сайт и найдите "FTP Script".

Вот тот, который я нашел:

#!/bin/sh

HOST='some.ftp.server'
USER='myuser'
PASSWD='mypass'
FILE='myfile'

ftp -n $HOST <<END_SCRIPT
user ${USER} ${PASSWD}
cd /path/to/something
get $FILE
quit
END_SCRIPT

exit 0

Кроме того, Command Line Foo - еще один хороший сайт, где я нашел этот сумасшедший удивительный пример передачи файлов ftp-ish:

Create a file server, listening in port 7000:

while true; do nc -l 7000 | tar -xvf -; done

Then, at client side:

tar c myfile | nc localhost 7000 ##Send file myfile to server
tar c mydir | nc localhost 7000 ## Send directory mydir to server

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