curl & wget

Тема дорожной карты · Linux & Unix Fundamentals

curl — это универсальный инструмент для работы с HTTP, HTTPS, FTP и SMTP протоколами, который широко используется для автоматизации задач в CI/CD системах, проверки состояния сервисов и отладки API. Важными флагами curl являются -fsSL, которые обеспечивают безопасное выполнение команд: -f заставляет curl завершаться при возникновении HTTP-ошибок, -s позволяет curl работать в тихом режиме, выводя только ошибки, а -L позволяет переходить по редиректам. Другие полезные флаги включают -X для указания метода HTTP-запроса, -H для добавления HTTP-заголовков, -d или --data-binary для передачи данных запроса, -o file для сохранения ответа в файл, -i для вывода заголовков HTTP-ответа и -v или --trace-ascii для подробной отладки запросов.

wget, с другой стороны, предназначен для устойчивых и массовых загрузок файлов. Он может возобновлять прерванные загрузки с помощью флага -c, зеркалировать сайты с помощью -r --no-parent, а также ограничивать скорость загрузки с помощью --limit-rate. wget также поддерживает работу с HTTP, HTTPS и FTP протоколами, делая его отличным инструментом для автоматизации загрузок и создания зеркальных копий сайтов.

Использование curl ... | sudo bash из недоверенных источников может привести к серьезным проблемам безопасности, поскольку это позволяет выполнить произвольный код с правами суперпользователя. Важно всегда проверять исходный код перед выполнением. Для защиты от уязвимостей, особенно в областях, где используется TLS, рекомендуется фиксировать версию TLS, используя флаг --tlsv1.2, и ограничивать протоколы с помощью --proto =https.

Как это работает

curl и wget используются для выполнения запросов к удаленным серверам и загрузки данных. Они работают через различные сетевые команды, такие как ip для управления сетевыми интерфейсами и маршрутизацией, ss для просмотра сокетов и соединений, dig/host/nslookup для работы с DNS, ping/traceroute/mtr для проверки доступности и задержек, tcpdump/wireshark для захвата и анализа сетевых пакетов, nc (netcat) для работы с TCP и UDP соединениями, а также iptables, nftables, ufw и firewalld для управления сетевыми фильтрами и правилами.

Когда применять

curl и wget особенно полезны в сценариях, где требуется автоматизация взаимодействия с удаленными серверами. Например, ss -tnlp позволяет определить, какие порты открыты и кто их слушает, а ip a показывает текущие IP-адреса и конфигурации интерфейсов. Команда mtr объединяет функции ping и traceroute с непрерывной выборкой, что делает её отличным инструментом для диагностики сетевых проблем. tcpdump используется для захвата сетевых пакетов, что позволяет более глубоко анализировать сетевые проблемы.

Типичные ошибки

При использовании curl и wget могут возникнуть различные проблемы, связанные с настройками сети и безопасности. Например, правка правил сетевого фильтра через SSH может привести к блокировке доступа к серверу. Также следует учитывать, что nslookup и dig могут давать разные результаты из-за использования различных DNS-резолверов. Открытый порт 22 без fail2ban или ключевой аутентификации может стать жертвой атаки ботнета. Наконец, путаница между проблемами маршрутизации и DNS может привести к неверной диагностики и неправильным решениям.

Связанные понятия

Полезные ресурсы