Команды Linux и навыки работы с оболочкой
Curl: Веб-клиент командной строки, запускающий Интернет
Curl — это карманный HTTP-клиент любого набора операционных инструментов: диагностический, удобный для конвейера и честный в отношении того, что возвращается. Поверхность его флага выглядит огромной и по большей части не используется: около дюжины флагов охватывают повседневное оперативное использование, и знание их — это разница между запланированными проверками работоспособности и удачными. Правило, которое экономит больше всего страниц, тривиально: каждый раз устанавливайте --max-time, потому что терпение Curl бесконечно, а ваше — нет.
Главное
- Прежде чем загружать, посмотрите: curl -sSI https://host возвращает метод, заголовки и статус без тела; добавьте -v, если рукопожатия TLS, прокси-серверы или заголовки хостов ведут себя странно.
- Дисциплина таймаута не подлежит обсуждению: --connect-timeout 5 уничтожает мертвые соединения, --max-time 15 уничтожает медленные; проверка работоспособности без того и другого может пережить сбой, который она должна была обнаружить.
- Коды выхода — это контракт в скриптах: 7 — отказ в соединении, 28 — тайм-аут, 22 — ошибка HTTP, обнаруженная --fail; читайте код, а не только выходные данные, иначе ваш мониторинг ничего не узнает.
- Соедините видимость с принудительной реализацией: -w '%{http_code} %{time_total}\n' сообщает о том, что произошло, а --fail-with-body отображает тело ошибки; без одного из них неудача выглядит точно так же, как успех.
- Проверьте, что на самом деле нажимают пользователи: --resolve example.com:443:10.1.2.3 проверяет именованный сервер без DNS-игр, а -H «Хост: vhost.example.com» охватывает сторону vhost того же запроса.
- Передачи получают преднамеренные флаги: -o называет выходные данные, -L следует за просмотренными вами перенаправлениями, --retry 3 --retry-delay 2 смягчает нестабильные восходящие потоки, а -F обрабатывает многочастные загрузки, о которых никогда не заботились.
- Заголовки и сокеты содержат мир, не связанный с браузером: -H 'Authorization: Bearer...' для API и --unix-socket /run/app/app.sock для проверки локальных сервисов, которые вообще никогда не затрагивают TCP.
- Знайте две классические ловушки: переменные среды прокси, перехватывающие запрос, который -v предоставляет за секунды, и перенаправления, которые незаметно превращают POST в GET, если вы этого не хотели.
Заметка из практики
Проверка работоспособности, которая висела пятнадцать минут, выполнялась без --max-time внутри цикла cron, и она пережила сбой, который должна была обнаружить. В принципе, тайм-ауты теперь идут перед URL-адресом.
Частые вопросы
Почему Curl вышел из 0, когда сайт вернул 500?
успех Curl означает, что транспорт сработал; Ошибки уровня HTTP невидимы без --fail (выход 22) или чтения %{http_code} из -w. Скрипты мониторинга настаивают на одном из двух.
curl или wget для скриптов?
Curl для API, заголовков, тел POST и точного управления; wget для зеркалирования и рекурсии. Для одноразового GET работает любой из них, а конвейер, смешивающий оба, обычно является признаком того, что никто не решил, кому принадлежит задание.
Оправдан ли когда-либо пропуск проверки TLS?
Иногда за одну интерактивную диагностику по самоподписанному лабораторному сертификату; во всем, написанном по сценарию или управляемом cron, нет. -k отключает единственную проверку, которая не позволяет посреднику завладеть вашим переводом.
Как узнать, где на самом деле зависает медленный запрос?
Переменные времени: -w 'dns:%{time_namelookup} connect:%{time_connect} tls:%{time_appconnect} ttfb:%{time_starttransfer} total:%{time_total}\n', запускаемый несколько раз, отделяет нестабильность DNS от проблем при рукопожатии и зависаний серверной части.
Как мы берём на себя команды linux и навыки работы с оболочкой
Мы разбирались с этим сотни раз: Команды и сценарии сценариев, которые решают, управляет ли администратор сервером или борется с ним: поиск, преобразование, передача и контроль текста и процессов с помощью инструментов, которые есть в каждой базовой установке. С услугой Безопасность серверов Linux и Администрирование серверов вы получаете полный цикл: мы оцениваем, внедряем, следим круглосуточно и подключаемся в течение 30 минут, когда это действительно нужно.