По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
От Алтуфьево до контроффера лишь на первый взгляд далеко: системный администратор Артем Горячев о своем пути из техподдержки в работу с сетевым и серверным железом Артем, системный администратор из Москвы, делится своей историей знакомства с технологиями и рассказывает о судьбоносных случайностях, которые случаются не только в кино, но и в мире IT. Влюбиться в технологии, начиная с университетских дней, и даже не знать, как учеба перевернет твою жизнь спустя 20 лет — Артем сменил множество компаний, пережил взлеты и падения, чтобы оказаться на своем месте. Он поделился с нами классной историей, в которой нашлось место инсайтам, счастливому совпадению и упорному труду. Как я встретил ваше IT Начало нулевых — вот где находятся истоки моей карьеры. История поисков себя развивалась в атмосферных декорациях, полных артефактов того времени: ЦАО, метро Новокузнецкая, субкультуры и теплые вечера, в которых чувствуешь себя в самом начале пути. Так оно и оказалось — это была дорога с надписью «СТАРТ», про которую я пока ничего не знал. Зато я знал точно, что учусь в технологическом вузе, где помимо стандартной начертательной геометрии и сопромата можно познакомиться и с программированием. Тогда это были Delphi и Turbo Pascal — простые для понимания языки, в которых я быстро разобрался и начал их осваивать. Программирование дает тебе чувство созидания и власти, похожее на эмоции от ремесленного дела. Вот перед тобой ничего нет, а потом — раз! — и ты пишешь программу, которую можно потрогать, увидеть, задействовать. Или, например, игру. Про геймдев я тогда ничего не знал, но сам факт, что своими руками можно разработать игру, не будучи при этом «Букой», очень волновал! Проще говоря, это было началом моего увлечения IT, которое следует за мной на протяжении всей карьеры. После окончания учебы я попробовал себя в различных областях технологий. Начал с работы оператором баз данных в большой сети кинотеатров, где мой труд был замечен, и меня повысили до дежурного администратора. Затем последовала работа по IT-мониторингу в банке, где моей задачей было разруливать инциденты в инфраструктуре. Знание английского языка стало дополнительным преимуществом — я много общался с европейскими партнерами, хоть условия и были стрессовыми (а в мониторинге не может быть иначе), работа мне нравилась. Несмотря на несколько переходов между компаниями, мое увлечение IT оставалось неизменным. Целительная сила провала Расскажу вот про какой опыт: я был обычным системным администратором, когда устроился на работу в известную ресторанную сеть. Моя рутина включала в себя администрирование и работу с программами типа 1С. Казалось, что я нашел свое место, но скоро выяснилось, что этот опыт оказался далеко не таким успешным, каким виделся изначально. Я решил уйти, но так и остался с неприятным осадком на душе (а эту сеть недолюбливаю до сих пор!). Этот провал был для меня не только уроком, но и важным моментом самопознания. Осознав, что нужно двигаться вперед, я решил не сдаваться и найти точки роста в этом неудачном опыте. Понимание, что мое текущее положение – всего лишь этап в моем профессиональном пути, стало толчком для стремления к новым знаниям в IT. На пути к успеху провалы — не страшные захлопнутые двери, а ключи к новым главам. Не бойтесь сделать шаг в неизвестность, и если что-то идет не так, лучше рассматривайте ошибки как уроки. Найти IT в Алтуфьево Скажу честно: уровень знаний у меня особо не рос, но любовь к IT никуда не делась: мне просто было комфортно на той планке, где я был. На тот момент я работал системным администратором в крупном строительном холдинге, занимаясь довольно рутинными задачами. Настолько рутинными, что в какой-то момент мой шеф сказал: «Пожалуй, хватит тут сидеть, Артем. Сейчас есть возможность заниматься задачами системного администрирования, но нужно будет многому учиться». Задача такого специалиста заключается в поддержании работоспособности оборудования на каждом из объектов заказчика — и я согласился. Работа на хелплдеске в какой-то момент превращается в карусель: одни и те же задачи, декорации, способы решения проблем, а смена роли пошла мне на пользу. Она позволяет не только смотреть на процессы, но и чувствовать их изнутри. Однажды я трудился на одном из выездных объектов — была классная теплая погода, и в перерыв я вышел прогуляться в парке. Очень хорошо помню этот момент: это было в районе Алтуфьево, тогда я достал телефон, чтобы сфотографировать живописное дерево, а когда зашел в интернет, чтобы выложить фотографию, увидел рекламу онлайн курсов. Это будто был знак свыше — я посмотрел программу, стоимость, и без раздумий оплатил обучение. Я прошел два курса по основам сетевых технологий и углубленному администрированию маршрутизаторов MikroTik — освоил их всего за полгода. Этот момент изменил все – я, работая в IT уже 10 лет, понял, как много еще предстоит узнать. С этого момента о своей карьере могу сказать так — это был не просто подъем, а настоящий бег в гору. Я находил все новые и новые пробелы в знаниях, ведь до этого я был, по сути, талантливым самоучкой без хорошей теоретической базы. Так я познакомился с академией Merion Network — активно приобретал дополнительные курсы: «Установку и настройку Asterisk» прошел за 2022 год, «Администрирование Linux» — за 2023 год, а сейчас изучаю «Администрирование Windows». В какой-то момент я понял, что у меня достаточно знаний и опыта для покорения новых вершин и решил сменить работу — остаться в той же группе компаний, но перейти на новую должность. Техническое собеседование было длинным и сложным, но благодаря новым умениям мне удалось получить предложение о работе. А когда я пришел увольняться с текущей работы, совершенно внезапно моя компания предложила мне контроффер с отличной зарплатой, и я оказался в красивом офисе в Москва Сити. Как понять, что ты добился успеха Для меня действительно был некий вау-момент: из простого системного администратора на поддержке я начал заниматься сетями и серверами, работать в классной локации за деньги, о которых раньше мог только мечтать. С новой должностью и новым местом работы стало меньше контактов с пользователями, зато стало больше работы именно с железом и технологиями. Вот именно это я и подразумеваю под словом «рост» — челленджи и смещение зоны ответственности. Как оказалось, в мире IT недостаточно иметь фундаментальное образование – нужно постоянно обучаться. Мой опыт показал, что даже после десяти лет в IT найдется место новым знаниям, и я уверен, что это справедливо для специалистов из любой айти-сферы. Вера в себя и непрерывное обучение стали ключевыми факторами в моем пути к успеху. Моя история доказывает, что даже с базовыми знаниями в айти, с верой в себя и нахождением правильных образовательных курсов, можно добиться впечатляющих результатов. Важно помнить, что обучение – это постоянный процесс. Только так и можно добиться успеха в быстро меняющемся мире технологий. О курсах и жизненных целях Мы решили задать Артему несколько вопросов о его учебе и планах, и заодно узнать его мнение о курсах Merion. Как тебе подача материала в курсах? Я совсем не новичок, поэтому нахожу какие-то минусы, конечно. Где-то преподаватель теряется, где-то кажется, что не хватает системы. Но я привык, мне абсолютно окей — в конце концов, я пришел учиться, конспектировать и задавать вопросы, а не придираться по мелочам. Основатели Merion говорят, что сознательно отказались от штаба кураторов и менторов, так как любое обучение во многом про самообучение. Согласен ли ты с этим, пришлось ли самому «копать» информацию дополнительно, или достаточно было того, что есть на курсе? Честно говоря, иногда возмущаюсь структуре, по которой написан курс. Возмущаюсь, возмущаюсь… А потом иду за покупкой нового курса. Все потому, что хорошего текстового структурированного материала по какой-либо теме или предметной области ты не найдешь днем с огнем. У Merion содержание курсов всегда хорошее, было бы желание учиться. Удалось ли достичь поставленных при обучении целей? Да, удалось. Моей главной целью было достичь понимания каких-то моментов, в которых я раньше не мог разобраться. И я разобрался, так что да — своих целей я достиг. Заплатить за курс, сказав этим «спасибо», я никогда не против, особенно если этот курс мне нужен. Скажу еще вот что: «Учеба — как рыбалка. Увидишь скидку на курс от Merion — тащи!» Заключение Я поделился своей историей — вы видите, как простой системный администратор, начавший свой путь с программирования на Delphi, стал специалистом, который работает с серверами, Active Directory, DNS, DHCP, сетевым железом. Да, эта история полнилась вызовами и провалами, но каждая ошибка стала шагом к росту, и к той точке, в которой я сейчас нахожусь. Главный урок из этой истории — важность постоянного обучения и веры в свои силы. Да, я не остановился после первых неудач, а, наоборот, использовал их как топливо для своего развития. Мой путь еще раз доказывает, что в мире IT образование — это не статичная точка, а динамичный путь.
img
gRPC — это мощная платформа для работы с удаленными вызовами процедур (Remote Procedure Calls). RPC позволят писать код так, как будто он будет выполняться на локальном компьютере, даже если он может выполняться на другом компьютере. Что такое RPC? RPC — это форма взаимодействия клиент-сервер, в которой используется вызов функции, а не обычный вызов HTTP. Идея в том, что мы можем вызвать и выполнить функцию где-то на удаленной системе, как если бы это была локальная функция. Он использует IDL (Interface Definition Language - язык описания интерфейса) как форму контракта на вызываемые функции и тип данных. RPC — это протокол "запрос-ответ", т.е. он следует модели "клиент-сервер": Клиент делает запрос на выполнение процедуры на удаленном сервере. Как и при синхронном локальном вызове, клиент приостанавливается до тех пор, пока не будут возвращены результаты процедуры. Параметры процедуры передаются по сети на сторону сервера. Процедура выполняется на сервере и, наконец, результаты передаются обратно клиенту. gRPC воспроизводит этот архитектурный стиль взаимодействия клиент-сервер через вызовы функций. Таким образом, gRPC технически не является новой концепцией. Скорее, он был заимствован из этой старой техники и улучшен, что сделало ее очень популярной. Что такое gRPC? В 2015 году Google открыл исходный код своего проекта, который в конечном итоге получил название gRPC. Но что на самом деле означает буква «g» в gRPC? Многие люди могут предположить, что это для Google, потому что Google это сделал, но это не так. Google меняет значение «g» для каждой версии до такой степени, что они даже сделали README, чтобы перечислить все значения. С момента появления gRPC он приобрел довольно большую популярность, и многие компании используют его. Есть много причин, по которым gRPC так популярен: простая абстракция, он поддерживается во многих языках и он очень эффективный. И помимо всех вышеперечисленных причин, gRPC популярен потому, что очень популярны микросервисы и имеется большое количество взаимодействий между ними. Именно здесь gRPC помогает больше всего, предоставляя поддержку и возможности для решения типичных проблем, возникающих в таких ситуациях. А поскольку разные сервисы могут быть написаны на разных языках, gRPC поставляется с несколькими библиотеками для их поддержки. Архитектура gRPC Мы сказали что производительность gRPC очень высока, но что делает ее такой хорошей? Что делает gRPC намного лучше, чем RPC, если их дизайн очень похож? Вот несколько ключевых отличий, которые делают gRPC столь эффективным. HTTP/2 HTTP был с нами очень долго. Сейчас почти все серверные службы используют этот протокол. HTTP/1.1 долгое время оставался актуальным, затем в 2015 году, появился HTTP/2, который фактически заменил HTTP/1.1 как самый популярный транспортный протокол в Интернете. Если вы помните, что 2015 год был также годом выхода gRPC, и это было вовсе не совпадение. HTTP/2 также был создан Google для использования gRPC в его архитектуре. HTTP/2 — одна из важных причин, почему gRPC может работать так хорошо. И в следующем разделе вы поймете, почему. Мультиплексирование запроса/ответа В традиционном протоколе HTTP невозможно отправить несколько запросов или получить несколько ответов вместе в одном соединении. Для каждого из них необходимо создать новое соединение. Такой вид мультиплексирования запроса/ответа стал возможен в HTTP/2 благодаря введению нового уровня HTTP/2, называемого binary framing. Этот двоичный уровень инкапсулирует и кодирует данные. На этом уровне HTTP-запрос/ответ разбивается на кадры (они же фреймы). Фрейм заголовков (HEADERS frame) содержит типичную информацию заголовков HTTP, а фрейм данных (DATA frame) содержит полезные данные. Используя этот механизм, можно получить данные из нескольких запросов в одном соединении. Это позволяет получать полезные данные из нескольких запросов с одним и тем же заголовком, тем самым идентифицируя их как один запрос. Сжатие заголовка Вы могли столкнуться со многими случаями, когда заголовки HTTP даже больше, чем полезная нагрузка. И HTTP/2 имеет очень интересную стратегию под названием HPack для решения этой проблемы. Во-первых, все в HTTP/2 кодируется перед отправкой, включая заголовки. Это помогает повысить производительность, но это не самое важное в сжатии заголовков. HTTP/2 сопоставляет заголовок как на стороне клиента, так и на стороне сервера. Из этого HTTP/2 может узнать, содержит ли заголовок одно и то же значение, и отправляет значение заголовка только в том случае, если оно отличается от предыдущего заголовка. Как видно на картинке выше, запрос № 2 отправит только новый путь, так как другие значения точно такие же как и были. И да, это значительно сокращает размер полезной нагрузки и, в свою очередь, еще больше повышает производительность HTTP/2. Что такое Protocol Buffer (Protobuf)? Protobuf — это наиболее часто используемый IDL для gRPC. Здесь вы храните свои данные и функциональные контракты в виде так называемого прото-файла. По сути это протокол сериализации данных, такой как JSON или XML. Выглядит это так: message Person { required string name = 1; required int32 id = 2; optional string email = 3; } Так мы определили сообщение Person с полями name, id и email Поскольку это форма контракта то и клиент, и сервер должны иметь один и тот же прото-файл. Файл proto действует как промежуточный контракт для клиента, чтобы вызвать любые доступные функции с сервера. Protobuf также имеет собственные механизмы, в отличие от обычного REST API, который просто отправляет строки JSON в виде байтов. Эти механизмы позволяют значительно уменьшить полезную нагрузку и повысить производительность. Что еще может предложить gRPC? Метаданные Вместо обычного заголовка HTTP-запроса в gRPC есть то, что называется метаданными (Metadata). Метаданные — это тип данных «ключ-значение», которые можно установить как на стороне клиента, так и на стороне сервера. Заголовок может быть назначен со стороны клиента, в то время как серверы могут назначать заголовок и трейлеры, если они оба представлены в виде метаданных. Потоковая передача Потоковая передача (Streaming) — это одна из основных концепций gRPC, когда в одном запросе может выполняться несколько действий. Это стало возможным благодаря упомянутой ранее возможности мультиплексирования HTTP/2. Существует несколько видов потоковой передачи: Server Streaming RPC: когда клиент отправляет один запрос, а сервер может отправить несколько ответов. Например, когда клиент отправляет запрос на домашнюю страницу со списком из нескольких элементов, сервер может отправлять ответы по отдельности, позволяя клиенту использовать отложенную загрузку. Client Streaming RPC: когда клиент отправляет несколько запросов, а сервер отправляет обратно только один ответ. Например, zip/chunk, загруженный клиентом. Bidirectional Streaming RPC: клиент и сервер одновременно отправляют сообщения друг другу, не дожидаясь ответа. Перехватчики gRPC поддерживает использование перехватчиков для своего запроса/ответа. Они перехватывают сообщения и позволяют вам изменять их. Это звучит знакомо? Если вы работали с HTTP-процессами в REST API, перехватчики очень похожи на middleware (оно же промежуточное ПО). Библиотеки gRPC обычно поддерживают перехватчики и обеспечивают простую реализацию. Перехватчики обычно используются для: Изменения запроса/ответа перед передачей. Это можно использовать для предоставления обязательной информации перед отправкой на клиент/сервер. Позволяет вам манипулировать каждым вызовом функции, например, добавлять дополнительные логи для отслеживания времени отклика. Балансировки нагрузки Если вы еще не знакомы с балансировкой нагрузки, это механизм, который позволяет распределять клиентские запросы по нескольким серверам. Но балансировка нагрузки обычно делается на уровне прокси (например, nginx). Так причем это здесь? Дело в том, что gRPC поддерживает метод балансировки нагрузки клиентом. Он уже реализован в библиотеке Golang и может быть легко использован. Хотя это может показаться какой-то магией, это не так. Там есть что-то типа преобразователя DNS для получения списка IP-адресов и алгоритм балансировки нагрузки под капотом. Отмена вызова Клиенты gRPC могут отменить вызов gRPC, когда им больше не нужен ответ. Однако откат на стороне сервера невозможен. Эта функция особенно полезна для потоковой передачи на стороне сервера, когда может поступать несколько запросов к серверу. Библиотека gRPC оснащена шаблоном метода наблюдателя, чтобы узнать, отменен ли запрос, и позволить ей отменить несколько соответствующих запросов одновременно.
img
Если вы когда-то пользовались какой-нибудь серверной версией Linux, то скорее всего сталкивались с командой curl. Эта мощная утилита системы Linux позволяет скачивать и загружать файлы на сервер и поддерживает более 20 протоколов. Раньше мы писали про первые 15 примеров cURL в Linux. Статья зашла - это продолжение :) cURL идеальная команда для взаимодействия с веб-сайтом или API, отправления запросов и получения ответов на терминал или с выводом в файл. Иногда она используется как часть сложного скрипта для передачи полученных данных другим функциям на дальнейшую обработку. Наряду с получением файлов из сервера, cURL так же используется для закачки части вебсайта. Несмотря на то, что она довольно хорошо справляется с работой, но всё же wget лучше наточен под такую работу. В конце материала мы рассмотрим несколько отличий и сходств этих двух утилит, но а пока расскажем как пользоваться утилитой curl. Скачивание файла Самая базовая команда, которую можно дать утилите cURL это скачать сайт или файл. По умолчанию, cURL использует протокол HTTP, но мы можем задать любой другой. Чтобы открыть исходный код сайта просто нужно ввести команду: $ curl http://www.google.com Когда мы вводим указанную команду, окно терминала заполняется HTML и другим кодом, используемым для создания веб страницы, но от такого вывода мало пользы. Изменим команду так, чтобы вывод перенаправлялся в HTML файл, чтобы затем можно было просмотреть содержимое. $ curl www.likegeeks.com --output likegeeks.html Теперь файл можно открыть любым браузером. Если нужно скачать какой-то файл, то команда остается та же. Только нужно добавить опцию output, как мы и сделали ранее. Если не сделать команда вернёт бинарный код файла, что может привести к сбою. Ниже показано что мы видим при попытке загрузить Word документ размером 500Кб. Файл начинает закачиваться, и мы видим текущий статус закачки. Когда загрузка завершится файл будет расположен по пути, указанной во время запуска команды. Если такового не было указано, то файл будет расположен в текущей директории. Также, вы, наверное, заметили ключ L в команде. При загрузке файла этот ключ необходим, но о его назначении поговорим чуть позже. Отслеживание редиректа Если после выполнения команды ничего не вернулось это значит, что на сайте есть редирект (переадресация) на другую ссылку, но cURL не понимает этого. Это можно исправить, указав ключ L при вводе команды. Во время подготовки материала мы заметили, что данный ключ нужен в подавляющем большинстве случаев. Так что возьмите себе эту фишку на вооружение. Остановка и продолжение скачивания Если во время закачки файла что-то пошло не так или же качаете большой файл, но ввиду каких-то причин не хотите делать это за одну сессию, cURL предоставляет возможность остановки и продолжения закачки. Чтобы остановить процесс вручную, нужно нажать комбинацию CTRL+C, которая используется для остановки почти всех процессов, запущенных в терминале. Итак, загрузка была начата, но мы прервали её комбинацией клавиш, а теперь нам нужно продолжить закачку. Для этого вводим следующую команду. $ curl -C - example.com/some-file.zip --output MyFile.zip Ключ C говорит утилите cURL продолжить закачку, но обратите внимание, что сразу после ключа указан дефис. Этот дефис указывает команде перед продолжением просмотреть уже закачанную часть, чтобы понять с какого места нужно продолжать загрузку. Закачка продолжилась и успешно завершилась. Указание времени выполнения команды Если нужно чтобы прервать выполнение команды cURL по истечении указанного времени, мы можем указать таймер выполнения команды. Это особо полезно так как некоторые операции выполняются бесконечно, что может привести к зависанию системы. Чтобы избежать этого можно указать максимальный период в секундах, по истечении которого cURL прервёт выполнение команды. Вышесказанное реализуется следующим образом: $ curl -m 60 example.com Также есть возможность указать в течении какого времени держать соединение активным. Это позволит избежать бесконечных попыток соединения с узлом, который не доступен. Эта опция тоже в качестве аргумента принимает значение в секундах. А команда выглядит так: $ curl --connect-timeout 60 example.com Указание логина и пароля Утилита cURL позволяет указывать имя пользователя и пароль при подключении. Чаще всего это нужно при аутентификации на FTP сервере. Для этого используется ключ u. Синтаксис команды указан ниже: $ curl -u username:password ftp://example.com Данную опцию можно использовать с любым протоколом, но FTP является самым распространённым для простой передачи файлов. Если нужно скачать файл указанный на скриншоте ниже запускаем ту же команду, только указываем полный путь к нужному документу. $ curl -u username:password ftp://example.com/readme.txt Использование прокси cURL можно указать, чтобы подключение выполнялось через прокси сервер. По умолчанию, она использует HTTP прокси, но можно указать и другие. Чтобы направить трафик через прокси используется ключ x. $ curl -x 192.168.1.1:8080 http://example.com Данная команда обязует cURL подключиться к прокси по адресу 192.168.1.1 на порту 8080 перед обращением на example.com Прокси можно использовать и с другими протоколами. Ниже показан пример использования прокси сервера для получения файла с фтп сервера. $ curl -x 192.168.1.1:8080 ftp://example.com/readme.txt cURL поддерживает много типов прокси и соответствующих ключей, но охватить их всех в одном руководстве сложно. Для более подробной информации о туннелировании, SOCKS прокси, аутентификации и т.п. можете прочитать man по команде cURL. Загрузка больших файлов по частям Мы уже показывали как можно остановить и запустить закачку, но что если мы хотим скачать файл большого размера по частям? cURL имеет и такую возможность. Чтобы реализовать это достаточно указать ключ -range и размер загружаемой части. Размер должен быть указан в байтах. Чтобы скачать последнюю версию Ubuntu частями по 100 МБ нужно прописать следующую команду: $ curl --range 0-99999999 http://releases.ubuntu.com/18.04/ubuntu-18.04.3-desktop-amd64.iso ubuntu-part1 Во вторая команде нужно указать с какого байта начинать загрузку. И так пока не скачается весь файл. $ curl --range 100000000-199999999 http://releases.ubuntu.com/18.04/ubuntu-18.04.3-desktop-amd64.iso ubuntu-part2 Затем просто нужно собрать воедино скачанные части: $ cat ubuntu-part? > ubuntu-18.04.3-desktop-amd64.iso Аутентификация по сертификату Для подключения к сайту использованием сертификата вместо обычной аутентификации можно указать опцию cert и путь к сертификату. $ curl --cert path/to/cert.crt:password ftp://example.com cURL поддерживает большое количество форматов сертификатов и имеет очень много опций для работы с ними: -cacert, cert-status, -cert-type, и т.д. Для списка всех ключей посмотрите man. Тихий режим Если вас раздражают разные сообщения об ошибках во время работы с cURL, то можно запустить её в тихом режиме. Для этого используется ключ s. Но, чтобы увидеть результат выполнения команды вывод нужно перенаправить в файл. Для сохранения файла в текущей директории просто нужно указать ключ O. $ curl -s -O http://example.com Как альтернатива, команду можно запустить с опцией --output и указать название и путь к месту сохранения файла. $ curl -s http://example.com --output index.html Получение заголовков cURL позволяет легко получать заголовков какого-либо сайта. Для этого достаточно запустить команду с ключом I. $ curl -I example.com Если запустить команду с ключами I и L совместно, то cURL выведёт заголовки даже если на сайте стоит переадресация. Множественные заголовки Команде cURL можно передать и заголовки. Для этого есть ключ H. Для передачи нескольких заголовков перед каждым из них нужно поставить данный ключ. $ curl -H 'Connection: keep-alive' -H 'Accept-Charset: utf-8 ' http://example.com POST Закачка файла на сервер POST самый распространённый метод получения данных на веб-сайтах. Например, когда заполняете форму на сайте, скорее всего данные из форм передаются серверу методом пост. Чтобы отправить сайту данные этим методом нужно использовать ключ d. $ curl -d 'name=geek&location=usa' http://example.com Чтобы загрузить файл вместо текста нужно ввести следующую команду $ curl -d @filename http://example.com Используйте ключ d столько раз, сколько данных или файлов нужно отправить на сайт. Чтобы загрузить файл через протокол FTP используйте ключ T $ curl -T myfile.txt ftp://example.com/some/directory/ Отправка почты Отправка почты это один из видов загрузки данных на почтовый сервер. Так как cURL может загружать файлы, то мы можем использовать ее и для отправки почты. Есть много вариантов сделать это, но здесь мы рассмотрим, как посылать почты через SMTP сервер. $ curl smtp://mail.example.com --mail-from me@example.com --mail-rcpt john@domain.com --upload-file email.txt Учтите, что файл e-mail должен быть отформатирован нужным образом. Что-то вроде этого: $ cat email.txt From: Web Administrator <me@example.com> To: John Doe <john@domain.com> Subject: An example email Date: Sat, 7 Dec 2019 02:10:15 John, Hope you have a great weekend. -Admin Как всегда, за подробной информацией можете обратиться к man. Чтение почты Для получения почты используется IMAP и POP3 и сurl поддерживает оба протокола. Зайдем на почту используя протокол IMAP: $ curl -u username:password imap://mail.example.com Данная команда выведет список доступных почтовых ящиков, но не покажет их содержание. Чтобы прочитать письмо нужно указать UID письма аргументов для опции X. $ curl -u username:password imap://mail.example.com -X 'UID FETCH 1234' Разница между cURL и wget Иногда пользователей путаются между curl и wget, так как обе они могут получать информацию с сервера. Но это единственное сходство между ними. В этом материале мы показали возможности curl. wget дает другие возможности. wget лучшая утилита для скачивания файлов, а также у него есть возможность делать это рекурсивно, переходя по всем ссылкам и директория и скачать сайт полностью. Таким образом, если вам нужно скачать все исходные файлы сайта используйте wget. Если же используется протокол отличный от HTTP или HTTPS, или нужно закачать файл на сервер, выберите curl. cURL удобен для скачивания одиночных файлов, хотя и wget неплохо справляется с данной задачей.
ЗИМНИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59