Linux & curl: Ты используешь его неправильно. 3 продвинутых трюка
Все знают curl https://google.com. Но curl — это не просто браузер в терминале, это швейцарский нож для работы с любым HTTP-ресурсом. Пора использовать его как профессионал.
Трюк 1: Анализ времени ответа (профилирование)
Когда сайт тормозит, где именно проблема: DNS, TCP-соединение, SSL-рукопожатие или ожидание ответа от сервера? curl может разложить всё по полочкам.
Bash
Вы получите JSON с точным временем каждого этапа соединения.
Трюк 2: Отправка JSON и заголовков (тестирование API)
Не нужно ставить Postman, чтобы протестировать API.
Bash
Трюк 3: Повтор запроса при ошибке (для скриптов)
Ваш скрипт упал, потому что сеть моргнула? curl может сам повторить запрос.
Bash
Взгляд архитектора:
curl — это не просто утилита, это универсальный кирпичик для построения систем автоматизации и мониторинга. Глубокое понимание его возможностей позволяет писать надёжные скрипты, создавать health checks для сервисов и проводить отладку сетевых взаимодействий без привлечения тяжеловесных инструментов.
#linux #curl #devops #api #networking #команды
Все знают curl https://google.com. Но curl — это не просто браузер в терминале, это швейцарский нож для работы с любым HTTP-ресурсом. Пора использовать его как профессионал.
Трюк 1: Анализ времени ответа (профилирование)
Когда сайт тормозит, где именно проблема: DNS, TCP-соединение, SSL-рукопожатие или ожидание ответа от сервера? curl может разложить всё по полочкам.
Bash
# Создаём файл curl-format.txt с нужными переменными
cat > curl-format.txt <<EOF
{
"time_namelookup": "%{time_namelookup}",
"time_connect": "%{time_connect}",
"time_appconnect": "%{time_appconnect}",
"time_pretransfer": "%{time_pretransfer}",
"time_starttransfer": "%{time_starttransfer}",
"time_total": "%{time_total}"
}
EOF
# Запускаем curl с нашим форматом вывода
curl -w "@curl-format.txt" -o /dev/null -s https://habr.com/
Вы получите JSON с точным временем каждого этапа соединения.
Трюк 2: Отправка JSON и заголовков (тестирование API)
Не нужно ставить Postman, чтобы протестировать API.
Bash
# Отправляем POST-запрос с JSON-телом и кастомным заголовком
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer mysecrettoken" \
-d '{"username":"admin","status":"active"}' \
http://api.example.com/users
Трюк 3: Повтор запроса при ошибке (для скриптов)
Ваш скрипт упал, потому что сеть моргнула? curl может сам повторить запрос.
Bash
# Попробовать 5 раз с задержкой в 10 секунд между попытками
curl --retry 5 --retry-delay 10 https://updates.example.com/latest.zip -O
Взгляд архитектора:
curl — это не просто утилита, это универсальный кирпичик для построения систем автоматизации и мониторинга. Глубокое понимание его возможностей позволяет писать надёжные скрипты, создавать health checks для сервисов и проводить отладку сетевых взаимодействий без привлечения тяжеловесных инструментов.
#linux #curl #devops #api #networking #команды
Linux & API: Парсим JSON в терминале как боги с помощью jq
curl-нул API и получил в ответ стену текста в формате JSON? Пытаться разобрать это глазами или через grep — прошлый век. Для работы со структурированными данными в терминале есть свой sed и awk — это утилита jq.
jq — это легковесный и сверхмощный обработчик JSON для командной строки.
Установка: sudo apt install jq или brew install jq.
Практический пример с GitHub API:
Получаем и красиво форматируем JSON:
Bash
# Получаем значение ключа "name"
curl -s 'https://api.github.com/users/torvalds' | jq '.name'
# Результат: "Linus Torvalds"
curl -s 'https://api.github.com/users/torvalds' | jq '{user: .login, company: .company, location: .location}'
# Получаем список репозиториев и выводим только их имена
curl -s 'https://api.github.com/users/torvalds/repos' | jq '.[ ].name'
[ ] — итератор по массиву.
Взгляд архитектора:
jq — это клей для современной автоматизации. Он позволяет строить сложные и надёжные пайплайны в bash-скриптах, которые работают с API облачных провайдеров, системами мониторинга и любыми другими сервисами, говорящими на JSON. Это превращает нечитаемые данные в полезную информацию прямо в терминале.
#linux #jq #json #api #bash #devops #команды
curl-нул API и получил в ответ стену текста в формате JSON? Пытаться разобрать это глазами или через grep — прошлый век. Для работы со структурированными данными в терминале есть свой sed и awk — это утилита jq.
jq — это легковесный и сверхмощный обработчик JSON для командной строки.
Установка: sudo apt install jq или brew install jq.
Практический пример с GitHub API:
Получаем и красиво форматируем JSON:
Bash
# Просто передаём вывод curl в jq с фильтром '.' (точка)
curl -s 'https://api.github.com/users/torvalds' | jq '.'
``
Извлекаем одно значение:
Bash
# Получаем значение ключа "name"
curl -s 'https://api.github.com/users/torvalds' | jq '.name'
# Результат: "Linus Torvalds"
Извлекаем несколько значений и создаем свой объект:
Bash
curl -s 'https://api.github.com/users/torvalds' | jq '{user: .login, company: .company, location: .location}'
Работаем с массивами (самое мощное):
Bash
# Получаем список репозиториев и выводим только их имена
curl -s 'https://api.github.com/users/torvalds/repos' | jq '.[ ].name'
`[ ] — итератор по массиву.
Взгляд архитектора:
jq — это клей для современной автоматизации. Он позволяет строить сложные и надёжные пайплайны в bash-скриптах, которые работают с API облачных провайдеров, системами мониторинга и любыми другими сервисами, говорящими на JSON. Это превращает нечитаемые данные в полезную информацию прямо в терминале.
#linux #jq #json #api #bash #devops #команды
👍2
⚡️ Full-Stack (DevOps): curl — это прошлое. Встречаем httpie (http)
Боль: Вам нужно отладить API. Вы пишете в curl (и мучаетесь): curl -X POST -H "Content-Type: application/json" -H "Auth: Bearer 123" -d '{"user":"admin"}' https://api.local
Реакция админа: Открыть Postman (тяжелый GUI) или "простыню" в curl.
Реакция архитектора: Использовать httpie (http).
httpie — это curl, созданный для человека. Он "умный", цветной и интуитивный.
Сравнение "До" и "После":
* curl (Боль): curl -X POST -H "Content-Type: application/json" https://api.local/users -d '{"id": 1, "name": "admin"}'
* httpie (Решение): http POST https://api.local/users id:=1 name=admin
Почему это круто:
* Авто-JSON: Он сам понимает, что вы шлете JSON.
* Подсветка: Ответ (JSON, HTML) подсвечен, как в IDE.
* Простота: Auth:Token становится http ... "Auth:Token".
Установка:
Взгляд архитектора: DX/DevEx (Developer Experience) — это не роскошь. Это эффективность. httpie — это инструмент, который снижает "трение" (friction) и экономит часы на отладке API и микросервисов.
#devops #cli #httpie #api #tools #гайд #curl
Боль: Вам нужно отладить API. Вы пишете в curl (и мучаетесь): curl -X POST -H "Content-Type: application/json" -H "Auth: Bearer 123" -d '{"user":"admin"}' https://api.local
Реакция админа: Открыть Postman (тяжелый GUI) или "простыню" в curl.
Реакция архитектора: Использовать httpie (http).
httpie — это curl, созданный для человека. Он "умный", цветной и интуитивный.
Сравнение "До" и "После":
* curl (Боль): curl -X POST -H "Content-Type: application/json" https://api.local/users -d '{"id": 1, "name": "admin"}'
* httpie (Решение): http POST https://api.local/users id:=1 name=admin
Почему это круто:
* Авто-JSON: Он сам понимает, что вы шлете JSON.
* Подсветка: Ответ (JSON, HTML) подсвечен, как в IDE.
* Простота: Auth:Token становится http ... "Auth:Token".
Установка:
sudo apt install httpie / brew install httpie
Взгляд архитектора: DX/DevEx (Developer Experience) — это не роскошь. Это эффективность. httpie — это инструмент, который снижает "трение" (friction) и экономит часы на отладке API и микросервисов.
#devops #cli #httpie #api #tools #гайд #curl
👍2
🧠 Skill: JSON — универсальный клей админа
Раньше мы грепали текст (grep | awk).
В 2026 году, когда вокруг Docker, Kubernetes и REST API, вывод почти всегда можно получить в JSON.
Парсить JSON как текст — это путь к ошибкам.
Учимся работать с объектами, а не строками:
🐧 Linux (jq): Не делайте grep "status", делайте:
(Выведет имена только упавших сервисов).
🪟 PowerShell: Здесь JSON становится родным объектом .NET автоматически:
Совет: Если консольная утилита имеет флаг --json (как kubectl, aws cli, docker), всегда используйте его для скриптов. Это делает вашу автоматизацию неубиваемой при смене форматирования вывода разработчиками.
#skills #json #jq #powershell #bash #devops #api
Раньше мы грепали текст (grep | awk).
В 2026 году, когда вокруг Docker, Kubernetes и REST API, вывод почти всегда можно получить в JSON.
Парсить JSON как текст — это путь к ошибкам.
Учимся работать с объектами, а не строками:
🐧 Linux (jq): Не делайте grep "status", делайте:
curl -s https://api.site.com/health | jq '.services[] | select(.status=="down") | .name'
(Выведет имена только упавших сервисов).
🪟 PowerShell: Здесь JSON становится родным объектом .NET автоматически:
$data = curl https://api.site.com/health | ConvertFrom-Json $data.services | Where-Object { $_.status -eq 'down' } | Select-Object name
Совет: Если консольная утилита имеет флаг --json (как kubectl, aws cli, docker), всегда используйте его для скриптов. Это делает вашу автоматизацию неубиваемой при смене форматирования вывода разработчиками.
#skills #json #jq #powershell #bash #devops #api
👍2🔥2👏1
🛡️ Skill: "API Rate Limiting" — защита от «дружественного» DDoS 🚧
В 2026 году почти любая инфраструктура — это API. Самая частая причина падения сервиса — не хакеры, а свои же разработчики, которые случайно запустили кривой цикл запросов.
Навык: Умение настроить Rate Limiting на уровне Nginx или Ingress Controller.
Пример для Nginx:
1. Описываем зону (10 запросов в секунду на один IP): limit_req_zone $binary_remote_addr zone=mylimit:10m rate=10r/s;
2. Применяем к локации: limit_req zone=mylimit burst=20 nodelay;
Что это дает: Даже если клиент начнет спамить запросами, твой бэкенд получит ровно столько, сколько может обработать. Остальное Nginx вежливо отсечет с ошибкой 429. Это база стабильности любого продакшена. 💎
#devops #nginx #api #security #scalability #microservices #skills
В 2026 году почти любая инфраструктура — это API. Самая частая причина падения сервиса — не хакеры, а свои же разработчики, которые случайно запустили кривой цикл запросов.
Навык: Умение настроить Rate Limiting на уровне Nginx или Ingress Controller.
Пример для Nginx:
1. Описываем зону (10 запросов в секунду на один IP): limit_req_zone $binary_remote_addr zone=mylimit:10m rate=10r/s;
2. Применяем к локации: limit_req zone=mylimit burst=20 nodelay;
Что это дает: Даже если клиент начнет спамить запросами, твой бэкенд получит ровно столько, сколько может обработать. Остальное Nginx вежливо отсечет с ошибкой 429. Это база стабильности любого продакшена. 💎
#devops #nginx #api #security #scalability #microservices #skills
⚡ PowerShell: Работаем с API как профи через RestMethod 🌐
В 2026 году админ постоянно взаимодействует с API: Jira, GitLab, мониторинг или облака. Многие до сих пор мучаются с curl в Windows, хотя в PowerShell есть нативный и гораздо более мощный инструмент.
Команда дня:
Почему это круто:
1. Splatting: Передача параметров через хэш-таблицу (@params) делает код чистым и читаемым.
2. Auto-Object: В отличие от Invoke-WebRequest, этот командлет сразу конвертирует JSON в объект. Тебе не нужно парсить текст!
3. Native Auth: Поддерживает современные протоколы авторизации из коробки.
#windows #powershell #api #automation #sysadmin #rest #devops 🚀
В 2026 году админ постоянно взаимодействует с API: Jira, GitLab, мониторинг или облака. Многие до сих пор мучаются с curl в Windows, хотя в PowerShell есть нативный и гораздо более мощный инструмент.
Команда дня:
$params = @{
Uri = "https://api.your-service.com/v1/task"
Method = "Post"
Headers = @{ "Authorization" = "Bearer $Token" }
ContentType = "application/json"
Body = @{ title = "Fix Server"; priority = 1 } | ConvertTo-Json
}
$response = Invoke-RestMethod @params
$response.id # Работаем с результатом сразу как с объектом!
Почему это круто:
1. Splatting: Передача параметров через хэш-таблицу (@params) делает код чистым и читаемым.
2. Auto-Object: В отличие от Invoke-WebRequest, этот командлет сразу конвертирует JSON в объект. Тебе не нужно парсить текст!
3. Native Auth: Поддерживает современные протоколы авторизации из коробки.
#windows #powershell #api #automation #sysadmin #rest #devops 🚀
🔥1