Утилита WGET заберет данные с удаленной системы
Однако Wget располагает уникальными функциями, которых нет в Curl, в частности, возможностью рекурсивно загружать целые Web-узлы, а не отдельные файлы. В данной статье рассказывается, как использовать Wget для типовых административных задач. Этот инструмент значительно облегчает перестройку сервера и автоматизированные загрузки.
Загружаем и устанавливаем Wget
Бесплатную утилиту Wget можно загрузить из сайта GNU (http://www.gnu.org/software/wget/wget.html). Существуют двоичные файлы Wget для большинства версий операционных систем Linux, Unix и Windows. Можно скомпилировать собственный программный код из исходного текста. На отдельном Web-узле (http://xoomer.virgilio.it/hherold) размещена новейшая версия для Windows, заимствованная из Web-узла GNU. Как и для многих других инструментов командной строки с открытым исходным кодом на основе Linux и Unix, существует множество разновидностей утилиты, в том числе версии с графическим интерфейсом для Windows. Довольно много версий с графическим интерфейсом для Windows можно найти, если провести поиск в Web по ключевым словам Wget, Windows и GUI.
В данной статье рассматривается базовая версия GNU, обновленная и напрямую перенесенная из Linux/Unix. Изучая функции инструмента, можно обнаружить другие версии и интерфейсы, более подходящие для конкретных нужд. Например, wGetGui (http://www.jensroesner.de/wgetgui) показывает большинство параметров Wget в доступном графическом окне, но не так удобна для использования в сценариях или пакетных файлах, как версии с командной строкой. В WinWGet (http://www.cybershade.us/winwget) базовая функциональность Wget расширена за счет поддержки заданий для загрузки из сети, что позволяет подготовить несколько заданий в элегантном интерфейсе Windows.
Чтобы настроить Wget на использование HTTPS, необходимо установить библиотеки OpenSSL, которые представляют собой простые DLL-файлы из загружаемого пакета Wget. Следует распаковать файл Wget.zip и добавить каталог Wget в путь поиска, или скопировать файлы wget.exe, libeay32.dll и ssleay32.dll в папку, для которой задан путь (например, C:windows, C:windowssystem32). Среди загружаемых файлов Wget имеется справочный файл для Windows (wget.hlp). Список многочисленных параметров командной строки можно получить в любое время, введя команду
wget help
Работать с Wget просто. Чтобы извлечь удаленную Web-страницу, следует открыть командную строку и ввести команду
wget http:/// index.html
Если Web-страница, выбираемая по умолчанию, неизвестна, то достаточно ввести
wget http://
и Wget загрузит домашнюю страницу по умолчанию, точно так же, как при вводе URL в браузер. По умолчанию, Wget сохраняет файлы в каталоге, из которого запущена команда. Указать другой путь можно с помощью параметра -P
Возможности Wget заметно расширяются, если использовать инструмент с параметрами командной строки. Например, параметр -r обесапечивает рекурсивное извлечение. По команде
wget -r http://
Wget исследует сайт и загружает все обнаруженные Web-страницы, графические изображения и Web-страницы, на которые есть ссылки. Глубина рекурсии -- пять уровней. Другими словами, утилита извлекает первую Web-страницу, находит ссылки на этой странице, извлекает Web-страницы, на которые указывают ссылки, и повторяет этот процесс до тех пор, пока не будет достигнут пятый уровень. Ограничить глубину исследования можно, указав уровень с помощью ключа -l n. Например, команда
wget -r -l 2 http://
задает поиск на Web-узле на два уровня в глубину. При использовании рекурсии следует соблюдать осторожность, иначе можно заполнить извлеченными страницами весь жесткий диск. Кроме того, вы можете навлечь на себя гнев Web-администраторов, так как инструмент пытается извлечь все обнаруженные файлы как можно быстрее и создает лишнюю нагрузку на сайт, особенно если пропускная способность вашего (и узла) канала связи невелика. С помощью параметра -w можно вежливо указать время ожидания (в секундах) между загрузкой страниц.
Извлеченные файлы сохраняются в новом каталоге, названном по имени Web-узла. В предыдущем примере, Wget создал бы каталог с именем www.targetwebsite.com и сохранил локальную копию сайта в этом каталоге. Этот каталог создается в каталоге, из которого был запущен инструмент, если с помощью параметра -P path не указано другое место. Например,
wget -r -l 2 -P C:wgetstuff http://
обеспечивает загрузку Web-узла в C:wgetstuffwww.targetwebsite.com. В этой папке будет сохранено содержимое собственно Web-узла - например, такие файлы, как index.html, каталоги с именами /images и /css, и любые другие основные и вспомогательные файлы для этого сайта.
Ссылки, обнаруженные в извлекаемых страницах, используются для доставки новых Web-страниц и файлов, поэтому для инструмента не требуется, чтобы на целевом Web-узле были активизированы режим просмотра каталогов или индексация сайта. Предположим, index.html - главная страница Web-узла, и содержит ссылки на три изображения. Wget сохранит всего четыре файла, независимо от того, какие файлы могут находиться в каталоге. Wget рекурсивно извлекает любые файлы, на которые указаны ссылки - даже с других сайтов. При этом создается каталог для каждого файла, связанного с оригиналом, до рекурсивного предела. Инструмент создает каталоги для других Web-узлов параллельно с каталогом Web-узла из первоначального запроса Wget.
Wget обеспечивает и более передовые функции просмотра Web, в том числе аутентификацию, файлы-маяки (пользовательские и сеансовые) и Web-прокси. Можно настроить множество параметров просмотра, например, источник ссылки (referrer) и пользовательского агента. Можно назначать методы POST или настроить Wget на выполнение инструкций в файле robots.txt или Robots META tag на сайте.
Выбор определенных файлов и каталогов
С помощью параметров -I directory list и -A file extension list можно настроить Wget на загрузку файлов только из указанных каталогов или файлов определенных типов. Например, команда
wget -r -I /images http://
загружает только содержимое каталога /images. Команда
wget -r -A jpg,gif http://
загружает только изображения JPEG и GIF. Эти параметры полезны для фильтрации загружаемого контента, чтобы сэкономить как пространство на жестком диске, так и полосу пропускания канала связи.
Ограничения Wget
В сущности, Wget строит локальную копию удаленного Web-узла, но при этом, утилите свойственны некоторые ограничения - особенно при извлечении файлов из сложных узлов. Wget проходит Web-узел только по ссылкам, и вероятно, не соберет все данные, доступные при прямом посещении сайта. Например, невозможна навигация по событиям, таким как щелчки мышью для загрузки файла (вместо прямой ссылки на файл на Web-странице). Аналогично, из динамически формируемых Web-страниц удается извлечь только статический HTML-контент, переданный в данное время для данного типа браузера. Wget лучше всего подходить для сбора простых файлов и загрузки с простых Web-узлов.
Узлы FTP
Wget - хорошая альтернатива встроенному FTP-клиенту Windows, благодаря совместимости с универсальными символами и сохранению меток даты и времени оригинального файла. Для загрузки по расписанию только новейших файлов из удаленного каталога FTP можно использовать команду
wget -N ftp:///path/to/files/*.*
Благодаря параметру -N извлекаются только файлы, более новые, чем загруженные ранее. В данном примере, Wget регистрируется на удаленном FTP-сервере через анонимное соединение (при необходимости, можно использовать ftp://user:password@host/path, чтобы указать имя пользователя и пароль), переходит в указанный каталог и пытается загрузить только новые файлы.
Автоматизация административных задач
Утилита Wget особенно полезна, если нужно дистанционно загружать файлы на сервер исключительно с применением командной строки. Например, можно установить соединение Telnet с удаленным сервером Windows и выполнить команду
wget -P C:downloads "http://"
чтобы загрузить исправление от Microsoft на этот сервер Windows. Кавычки обеспечивают корректную передачу URL в программу Wget, что бывает очень важно, в зависимости от сложности URL. Кроме того, механизм работает только с традиционными процедурами загрузки файлов, доступных через статический URL. Например, такие инструменты, как Wget, непригодны для загрузки программ с использованием нового интерактивного элемента управления ActiveX Genuine Windows компании Microsoft.
Применяйте Wget
Wget резко ускоряет процесс настройки конфигурации нового компьютера, и местонахождение исходных файлов хорошо документировано. Например, команду для загрузки новой программы или исправления можно скопировать в конфигурационный документ, чтобы впоследствии точно знать, откуда и для какой цели была загружена программа. Если компьютер придется восстанавливать заново, то можно скопировать команды из таких документов в консоль и быстро получить установочные файлы. Wget - простой, но полезный инструмент для управления и работы с данными из удаленных систем.
Джефф Феллинг (jeff@blackstatic.com) - редактор Windows IT Security и директор по информационной безопасности и проектированию инфраструктуры компании aQuantive.