Curl ftp передать файл
Обновлено: 05.07.2024
Я почти не работаю с ftp протоколом из-за его ограничений и проблем с безопасностью. Тем не менее иногда приходится иметь с ним дело, потому что предоставляют доступ к каким-то ресурсам по ftp. Мне понадобилось загружать готовые бэкапы на ftp сервер. На удивление, я потратил много времени, пока не нашел простой и подходящий вариант.
Если у вас есть желание научиться строить и поддерживать высокодоступные и надежные системы, рекомендую познакомиться с онлайн-курсом «DevOps практики и инструменты» в OTUS. Курс не для новичков, для поступления нужно пройти .Задача очень простая. Более того, у меня в своих шпаргалках даже были готовые варианты скриптов для загрузки файлов на удаленный ftp сервер. Но почему-то в этот раз они не работали. В общем случае все делается примерно так с помощью скрипта:
В принципе, все просто и раньше у меня нормально загружались файлы на ftp с этим скриптом. В этот раз почему-то нет. Не проходила авторизация, хотя если я делал все руками в консоли, то работало нормально. Я подозреваю, проблема была в лютых спецсимволах в пароле, которые я не смог нормально экранировать.
В итоге пошел другим путем. Оказывается, загружать файлы на ftp с авторизацией можно с помощью curl. Вот рабочий вариант, на котором я остановился:
Тут весь нужный функционал, который на удивление сразу заработал как надо.
backup | имя пользователя ftp |
password12345678 | пароль от ftp, который я поместил в одиночные кавычки, чтобы экранировать спецсимволы |
/backup/zabbix | директория на удаленном ftp сервере |
ftp.server.com | адрес ftp сервера |
Если загрузка не работает, можно добавить ключ -v к команде curl, будет подробный лог.
Все это было затеяно для бэкапа сервера мониторинга zabbix. Покажу сразу и сам скрипт бэкапа.
Нам часто приходится загружать различные файлы из интернета, например, исполняемые файлы программ, файлы скриптов, архивы с исходниками. Но не всегда это нужно делать через браузер. Во многих ситуациях гораздо проще выполнить все действия через терминал. Поскольку таким образом вы можете автоматизировать процесс. С другой стороны, веб-мастерам время от времени приходится тестировать доступность веб-сайтов, проверять отправляемые и получаемые заголовки и многое другое.
Для решения таких задач и задач подобного круга можно воспользоваться утилитой curl. Она позволяет решить намного более широкий круг задач, среди которых даже имитация действий пользователя на сайте. В этой статье мы рассмотрим как пользоваться curl, что это такое и зачем нужна эта программа.
Что такое curl?
Поддержка библиотеки curl была добавлена в множество различных языков программирования и платформ. Утилита curl - это независимая обвертка для этой библиотеки. Именно на этой утилите мы и остановимся в этой статье.
Команда curl
Перед тем как перейти к описанию того как может использоваться команда curl linux, давайте разберем саму утилиту и ее основные опции, которые нам понадобятся. Синтаксис утилиты очень прост:
$ curl опции ссылка
Теперь рассмотрим основные опции:
Это далеко не все параметры curl linux, но здесь перечислено все основное, что вам придется использовать.
Как пользоваться curl?
Мы рассмотрели все, что касается теории работы с утилитой curl, теперь пришло время перейти к практике, и рассмотреть примеры команды curl.
Загрузка файлов
Но тут вас ждет одна неожиданность, все содержимое файла будет отправлено на стандартный вывод. Чтобы записать его в какой-либо файл используйте:
А если вы хотите, чтобы полученный файл назывался так же, как и файл на сервере, используйте опцию -O:
Если загрузка была неожиданно прервана, вы можете ее возобновить:
Если нужно, одной командой можно скачать несколько файлов:
Еще одна вещь, которая может быть полезной администратору - это загрузка файла, только если он был изменен:
Данная команда скачает файл, только если он был изменен после 21 декабря 2017.
Ограничение скорости
Вы можете ограничить скорость загрузки до необходимого предела, чтобы не перегружать сеть с помощью опции -Y:
Здесь нужно указать количество килобайт в секунду, которые можно загружать. Также вы можете разорвать соединение если скорости недостаточно, для этого используйте опцию -Y:
Передача файлов
Загрузка файлов, это достаточно просто, но утилита позволяет выполнять и другие действия, например, отправку файлов на ftp сервер. Для этого существует опция -T:
В ответе утилита сообщит где вы можете найти загруженный файл.
Отправка данных POST
Вы можете отправлять не только файлы, но и любые данные методом POST. Напомню, что этот метод используется для отправки данных различных форм. Для отправки такого запроса используйте опцию -d. Для тестирования будем пользоваться тем же сервисом:
Если вас не устраивает такой вариант отправки, вы можете сделать вид, что отправили форму. Для этого есть опция -F:
Здесь мы передаем формой поле password, с типом обычный текст, точно так же вы можете передать несколько параметров.
Передача и прием куки
Куки или Cookie используются сайтами для хранения некой информации на стороне пользователя. Это может быть необходимо, например, для аутентификации. Вы можете принимать и передавать Cookie с помощью curl. Чтобы сохранить полученные Cookie в файл используйте опцию -c:
Передача и анализ заголовков
Не всегда нам обязательно нужно содержимое страницы. Иногда могут быть интересны только заголовки. Чтобы вывести только их есть опция -I:
Аутентификация curl
Использование прокси
Если вам нужно использовать прокси сервер для загрузки файлов, то это тоже очень просто. Достаточно задать адрес прокси сервера в опции -x:
Выводы
В этой статье мы рассмотрели как пользоваться curl, зачем нужна эта утилита и основные ее возможности. Несмотря на свою схожесть с wget, они очень сильно отличаются. Команда curl linux предназначена больше для анализа и имитации различных действий на сервере, тогда как wget больше подходит для загрузки файлов и краулинга сайтов.
Мы уже видели, как подключиться к FTP-серверу и работать с ним (или с его содержимым) через терминал, то есть без использования графических приложений.
На этот раз я предлагаю вам плюс или минус . позвольте мне объяснить.
Несколько лет назад я оставил их сценарий bash, используемый для создания резервных копий (сохраняет) данные с сервера. Скрипт скопировал серию папок (например, / etc /), экспортированных баз данных и т. Д. И сжал их с паролем в файл .RAR или .7z (в настоящее время я использую 7z), единственное, чего не хватало скрипту, - это возможность загрузки после этого сжатый файл на какой-нибудь FTP-сервер, таким образом, сохранение с сервера будет скопировано в другое место.
В эти дни я снова взялся за сценарий, чтобы немного оптимизировать его, улучшить, и, очевидно, необходимость последнего, о которой я говорил вам, обнаружилась при загрузке сжатого архива на внешний FTP.
Как загрузить на FTP с помощью одной команды?
Мне нужно было с помощью одной команды подключиться к FTP с именем пользователя и паролем, и хорошо; загрузите файл в определенную папку.
Терминальные приложения, которые позволяют мне подключаться к FTP, вводить пользователя и пароль и загружать файлы, их много, но… которые позволяют мне делать все это в одной строке, со всеми уже указанными параметрами…. привет, вопрос.
Пересмотрев 4 или 5… подумал, ага !! . но он существует виться
Загрузить на FTP с помощью curl
С curl я могу делать бесконечное количество вещей, может быть, я могу делать то, что хочу . и все!
С параметром -u я могу указать пользователя и пароль, а также с параметром -T я могу сказать ему, что нужно загрузить файл, и, наконец, сообщить ему, на какой FTP и в какую папку я хочу его загрузить, в конце я просто поместите полный путь примерно так:
curl -u usuario:password -T archivo-backup.7z ftp://192.168.128.2/SERVER_BACKUPS/
Он подключается к FTP 192.168.128.2 с пользователем пользователь и пароль пароль, и загрузите в папку SERVER_BACKUPS файл называется файл-backup.7z
Все просто, правда? .
Конечно, это может быть полезно для нас, как и сама команда, однако лучше всего использовать ее с помощью скрипта, такого как . тот, который я упоминал ранее
А что насчет упомянутого сценария?
Я делаю улучшения в скрипте, особенно в том числе с учетом некоторых запросов или предложений пользователей.
Конец!
Содержание статьи соответствует нашим принципам редакционная этика. Чтобы сообщить об ошибке, нажмите здесь.
Сurl – утилита командной строки для скачивания и загрузки данных. Она выросла из проекта шведского программиста Даниэля Стенберга. Изначально в середине 90-х, на заре развития Интернета, он разрабатывал бота, который должен был загружать с веб-страницы курсы валют и сообщать пользователям IRC эквивалент шведских крон в долларах США. Со временем проект развивался, появлялась поддержка различных протоколов и новые функции. Теперь curl используется для передачи любых данных и ряда других полезных задач. Рассмотрим основные моменты работы с этим инструментом.
Синтаксис и опции curl
Синтаксис команды следующий:
В качестве аргумента задается, как правило, URL скачиваемого файла. Основные опции перечислены ниже
Основные опции мы рассмотрим на простых примерах.
Просмотр версии curl
![]()
Скачивание файла
Если вам требуется скачать файл, запустите curl с опцией –O или –o. Первая из них сохраняет файл в текущей рабочей директории под тем же именем, что и в удаленном месторасположении. Вторая опция позволяет вам указать другое имя и/или место для скачивания.
Cохранение файла под исходным именем (yourfile) в текущей рабочей директории.
Cохранение файла под именем newfile в директории /tmp/examplе/.
Возобновление прерванной загрузки
Если скачивание по какой-то причине было прервано (например, пользователь нажал Ctrl+C), вы легко можете возобновить его с момента остановки при помощи опции -C – (дефис, С, тире):
Скачивание нескольких файлов
Если использовать curl вместе с командой xargs, можно скачивать файлы в соответствии со списком URL, заданном в файле (в данном примере listurls.txt):
Использование прокси-сервера
Если ваш прокси-сервер не требует аутентификации, опцию -U user:qwerty1234 указывать не нужно.
Также эту информацию можно получить, воспользовавшись функциями браузера для разработчиков.
cURL POST-запросы с параметрами
Этим приемом можно пользоваться для симуляции работы обычных веб-форм.
Следующая команда скачивает в текущую рабочую директорию файл yourfile с удаленного FTP-сервера ftp://yourftpserver (имя пользователя user, пароль qwerty1234):
Если FTP-сервер поддерживает анонимный вход, параметр –u с именем пользователя и пароля указывать не нужно.
Загрузка файлов на FTP-сервер
Для загрузки локального файла mylocalfile.tar.gz воспользуйтесь следующей командой:
Указание агента пользователя
Запись файлов cookie с веб-сайта
Отправка файлов cookie на сайт
Полученные в предыдущем примере файлы cookie можно использовать в дальнейших запросах к тому же самому сайту:
Изменение разрешения имен
Ограничение скорости скачивания
Заключение
Мы рассмотрели краткую историю появления curl и наиболее характерные примеры применения этой команды. Для более подробной информации можно обратиться к соответствующей man-странице.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Читайте также: