Введение Операционные системы на базе ядра Linux представляют собой очень многообразную группу Unix-подобных операционных систем. Более правильное название этих операционных систем — GNU/Linux. Каждый конкретный тип операционной системы на базе ядра Linux принято называть дистрибутивом. Каждый дистрибутив имеет собственное имя. Например, дистрибутивами GNU/Linux являются следующие операционные системы: Debian, AltLinux, Mandriva, Fedora, Ubuntu и многие другие. Каждый дистрибутив так или иначе развивается на протяжении своего относительно длинного или короткого периода «жизни», поэтому представлен различными версиями. Так уж сложилось, что операционная система ГНУ/Линукс была разработана квалифицированными программистами-хакерами. И по сей день бытует мнение, что эту ОС используют только хакеры ввиду ее надуманной запутанности и сложности. Видимо, если пользователь работает в ОС на уровне консоли, то за обычного человека он вряд ли сойдёт. Таковы уж человеческие представления. Тем не менее, появление систем GNU/Linux является вполне естественным в эволюции компьютерных технологий. Сегодня разработкой новых версий ядра, программ под Линукс занимаются тысячи программистов по всему миру. На данный момент основные силы разработчиков сосредоточены в различных больших и маленьких фирмах. Стереотип типичного программиста Linux как хакера, работающего во мраке ночи и ради собственного удовольствия, уже устарел. Такие люди были ведущей силой разработчиков в 90-х годах. Тысячи программистов различной квалификации работают над выходом новых дистрибутивов ГНУ/Линукса на постоянной основе. Около 10% из них занимаются этим все свое рабочее время и получают за это заработную плату. Именно эти программисты выпускают до 95% всего программного продукта. В последнее время разработка Линукс все больше и больше поддерживается небольшим корпоративным сообществом, которое получает финансовую помощь от таких крупных компаний, как IBM, Red Hat и SGI. Большинство программистов часть своего рабочего времени тратят на работу над коммерческим ПО, а часть – на разработку дистрибутивов Линукс. Но не следует забывать, что Линукс – это open source продукт, так что любой желающий может прислать код, который пойдет на улучшение и развитие системы. Есть специальные отделы, которые рассматривают присланный код и включают его в систему, если он им подходит. Автору данной работы также близки современные веяния в развитии свободного ПО. В этой работе он представляет три линуксовые программы собственной разработки: xwget-micro, xwget-light и xwget-full. Эти программы обеспечивают удобный графический интерфейс для использования GNU-утилиты wget. С их помощью можно поводить следующие работы в сети: 1) копирование из сети Интернет отдельных файлов или групп файлов по списку; 2) создание резервных копий сайтов; 3) проверка обновления файлов на серверах и локальное сохранение новых версий; 4) копирование сайтов для дальнейшего локального просмотра; 5) проверка целостности сайтов в режиме паука (spider); 6) другие нестандартные способы использования. Представленный программный пакет способен значительно облегчить работу людей по созданию локальных электронных справочников на базе уже существующих образовательных сайтов. Такая технология позволяет распространять информацию из Всемирной Сети в вычислительные залы, не имеющие выхода в Интернет, что может существенно помочь работе преподавателей. Автор выражает признательность своему научному руководителю Артемьеву Эдуарду Иосифовичу за помощь в освоении операционной системы GNU/Linux и приобщении к активному линуксовому движению. Глава 1. Консольная утилита GNU wget GNU wget это открыто распространяемая утилита для загрузки файлов из интернет. Она поддерживает протоколы HTTP, HTTPS, и FTP, загрузку с прокси-серверов по протоколу HTTP. Программа wget может следовать по ссылкам html-страниц и создавать локальные копии удалённых web-сайтов, возможно полное восстановление структуры каталогов сайта. Это называется рекурсивная загрузка (recursive downloading). При выполнении такого задания, wget ищет файл с правами доступа для роботов (/robots.txt). Возможна также конвертация ссылок в загруженных html-файлах для просмотра сайта в автономном режиме (offline browsing). Проверка заголовков файлов. Программа wget может прочитать заголовок файла, что доступно по протоколам HTTP и FTP и сравнить с заголовком файла, который был загружен ранее, и, если это так, загрузить новую версию файла. Благодаря этому, с Wget возможно зеркальное хранение сайтов и коллекций файлов по FTP. Wget разработан для медленных или нестабильных соединений: если во время загрузки возникнет проблема, Wget будет продолжать пытаться загрузить файл. Если сервер, с которого загружается файл, поддерживает докачку, Wget продолжит загружать файл с того места, где оборвалась загрузка. Рассмотрим использование wget для скачивания сайтов из Интернета для дальнейшего их просмотра в автономном режиме. Для этого в консоли нужно выполнить команду: wget -r -k -l 7 -p -E -nc -np http://site.com/ После выполнения данной команды в текущем каталоге будет создана директория site.com, в которую будет загружена локальная копия сайта http://site.com. Чтобы открыть главную страницу сайта нужно открыть файл index.html. Рассмотрим использованные параметры: Пар. Описание -r рекурсивное скачивание страниц сайта -k преобразование всех ссылок на страницах для локального просмотра (в автономном режиме) -p указывает на то, что нужно загрузить все файлы, которые требуются для отображения страниц (изображения, css и т.д.) -l 7 определяет максимальную глубину вложенности страниц, которые wget должен скачать (по умолчанию значение равно 5, в примере мы установили 7) -E добавлять к загруженным файлам расширение html -nc при возобновлении прерванной загрузки, скачанные ранее файлы не будут перезаписанны -np при рекурсивном скачивании не заходить в родительские каталоги Ниже рассмотрим ещё несколько примеров использования команды wget. Загрузка всех URL, указанных в файле FILE: wget -i FILE Скачивание файла в указанный каталог (-P): wget -P /path/for/save \ ftp://ftp.example.org/some_file.iso Использование имени пользователя и пароля на FTP/HTTP (вариант 1): wget \ ftp://login:password@ftp.example.org/some_file.iso Использование имени пользователя и пароля на FTP/HTTP (вариант 2): wget --user=login —password=password \ ftp://ftp.example.org/some_file.iso Скачивание в фоновом режиме (-b): wget -b ftp://ftp.example.org/some_file.iso Продолжить (-c continue) загрузку ранее не полностью загруженного файла: wget -c http://example.org/file.iso Скачать страницу с глубиной следования 10, записывая протокол в файл log: wget -r -l 10 http://example.org/ -o log Скачать содержимое каталога http://example.org/~luzer/my-archive/ и всех его подкаталогов, при этом не поднимаясь по иерархии каталогов выше: wget -r --no-parent \ http://example.org/~luzer/my-archive/ Для того, чтобы во всех скачанных страницах ссылки преобразовывались в относительные для локального просмотра, необходимо использовать ключ -k: wget -r -l 10 -k http://example.org/ Также поддерживается идентификация на сервере: wget --save-cookies cookies.txt \ --post-data "user=foo&password=bar" \ http://example.org/auth.php Вывести содержание ответа в консоль: wget http://example.org --quiet -O - Глава 2. Графический интерфейс пользователя (GUI) Работа в GNU/Linux может осуществляться с применением GUI (графического пользовательского интерфейса), который позволяет с помощью манипулятора «мышь» выполнить необходимую работу без чтения и ручного набора большого объёма текстовой информации. Но традиционное окружение Unix – это CLI (интерфейс командной строки), где приходится посредством клавиатуры вводить стандартные текстовые команды. Такой подход обеспечивает более полное управление системой, а также более быструю работу, но требует знания системных команд. На сегодняшний день создано великое многообразие дистрибутивов GNU/Linux. Несмотря на внешние различия, все они используют практически одни и те же консольные команды. Опытные пользователи обычно запоминают эти команды, что упрощает их работу с различными дистрибутивами Линукс. Однако, когда речь идёт об использовании длинных по написанию команд, включающих различные ключи и параметры, многие опытные пользователи приходят в некоторую растерянность. Они зачастую не в состоянии запомнить внушительные символьные последовательности! Пользователи обычно копируют команды из руководств или собственных текстовых шпаргалок в буфер обмена для последующей вставки в консоль (терминал). Такая ситуация возникает и при использовании стандартной утилиты GNU wget. Огромное количество параметров (свыше 60) делают её гибким и мощным, но весьма запутанным, инструментом. Вниманию пользователя приходится буквально разрываться между консольным экраном, текстовым руководством (мануалом) и клавиатурой. Лучшим решением данной проблемы является использование наглядного графического интерфейса. Для упрощения работы начинающих и обычных пользователей GNU/Linux, автор создал три графических программы. Эти программы различаются по функциональным возможностям: 1) xwget-micro имеет предельно простой интерфейс, не допускающий каких-либо гибких настроек; 2) xwget-light имеет облегчённый интерфейс, позволяющий регулировать основные настройки скачивания; 3) xwget-full имеет громоздкий интерфейс, охватывающий настройку всех функциональных возможностей утилиты wget. Их работа более подробно будет рассмотрена в следующих главах. Глава 3. Программа xwget-micro Как упоминалось в предыдущей главе, программа xwget-micro имеет предельно простой интерфейс, не допускающий каких-либо гибких настроек (рис. 3.1). По сути всё управление программой сводится к вставке в адресную строку url-адеса скачиваемого сайта и нажатию кнопки «Скачать». Рис. 3.1. Работа программы xwget-micro. На рисунке 3.1 показано, что в результате работы программы в текущем каталоге был создан подкаталог arraylove.narod.ru, в который была закачана локализованная копия одноимённого сайта. Исходный код представленной программы настолько короток и прост, что вполне смог уместиться на следующей странице. #!/usr/bin/python # -*- coding: utf-8 -*- # xwget-micro # Скачивалка сайтов (версия микро) # Скачивание сайтов для локального просмотра на компьютере # Графический интерфейс пользователя для команды wget # Подключение библиотек Tkinter и os from Tkinter import * import