ЮРИЙ ВИННИК, сисадмин в информационном центре Львовской железной дороги с 2001 года. Занимается программированием на языках PHP, Perl, Pascal, Bash Script
MyZCI поможет
Моя система автоматической инвентаризации
Существует много программ инвентаризации компьютерной техники, но большинство из них являются коммерческими и стоят денег. Я же расскажу, как решить эту задачу, не потратив ни копейки.
При наличии большого количества компьютеров в корпоративной сети очень полезно иметь полную и регулярно обновляемую информацию о каждом компьютере в электронном виде. В этой же базе удобно хранить инвентарные номера устройств, информацию об установленном ПО, историю изменений конфигурации и многое другое.
Для этих целей я решил использовать систему zCI [1]. Эта система хорошо подходит для проведения инвентаризации корпоративной сети. Она проста в использовании, бесплатна, открыта.
Но поэксплуатировав её некоторое время, я отметил ряд недочётов.
Во-первых, в системе отсутствовали поля для хранения инвентарных номеров и информации о размещении компьютеров в том или ином подразделении организации.
Во-вторых, система не допускала ручного ввода устройства, и такие важные узлы сети, как маршрутизаторы, невозможно было добавить в базу данных системы.
В-третьих, внесённую в систему информацию нельзя удалить тривиальным способом, а только вручную, удаляя данные из таблиц. И наконец, интерфейс системы был написан на английском языке, который, увы, не все понимают в нужном объеме.
Поэтому я решил устранить все эти недостатки системы инвентаризации zCI радикальным методом – написал форк под названием MyZCI и разместил его на SorceForge.net [2]. В этой статье я хочу рассказать об опыте установки и применения этой системы для инвентаризации компьютерной техники.
Доработка продукта
В этой главе я расскажу об изменениях, которые я произвёл над исходным кодом проекта zCI. Если читателя не интересуют эти подробности, он может смело опустить главу и сразу же переходить к следующей.
Вначале я решил перевести интерфейс на русский и украинский языки. Исходный проект zCI был написан на PHP, поэтому был произведён перевод всех фраз на английском языке в командах echo.
Чтобы повысить читаемость выводимой из таблиц информации, при выводе названий столбцов таблиц пришлось операторы SQL типа:
SELECT b.hostname,b.user FROM computer_system b
заменить на:
SELECT b.hostname as 'Хост',b.user as 'Имя пользователя' FROM computer_system b
В скрипте registered_device.php добавил переменные $dev_name и $zak, в которых хранились название типа устройств (периферия или мониторы) и суффикс прилагательного «Зарегистрированный» («~ые» или «~ая» в зависимости от типа устройства).
К таблицам computer_system, monitor, peripheral добавлено поле invn типа varchar(31), в котором будет храниться инвентарный номер соответствующих устройств.
В таблицу computer_system также были добавлены поля place типа varchar(100) и comment типа varchar(200), которые могли бы содержать место размещение компьютера и примечания.
В PHP-скриптах computer_details.php и computer_details_spvisor.php, отвечающих за отображение и изменение информации о компьютере, были добавлены вывод инвентарного номера, места размещения и примечания, а также возможность их изменения. В скрипт computer_details_spvisor.php добавил кнопку «Удалить» и написал метод удаления информации об устройстве из системы – del_comp.php.
Для автоматического обновления информации я написал несколько скриптов для установки на стороне клиента. Ссылки для скачивания архивов с этими скриптами я вынес на главную станицу системы, а сами архивы разместил в подкаталоге add-ons.
В случае сбора информации с ОС семейства Windows при помощи пакетного файла install.bat происходит запрос сетевого адреса и пути к системе MyZCI, после чего эта информация вносится в файл takedata.js, который, собственно, и собирает и регистрирует информацию об инвентаризируемой системе. Далее создаётся фоновый процесс с помощью run.vbs, который и регистрируется в реестре для автоматического выполнения при каждом старте системы.
В случае ОС семейства GNU/Linux при запуске на строне клиента скрипта install.sh происходит проверка наличия необходимых для корректной работы клиентской части пакетов: sun-jdk, lshw, read-edid. Далее будет запрошена и внесена в файл lshwclient.java информация о сетевом адресе и пути к системе MyZCI, после чего с помощью компилятора Java будет создана программа, собирающая информацию о системе. Эта программа будет внесена в планировщик заданий cron для периодического выполнения каждый час – для регулярного обновления информации об инвентаризируемой системе.
Рекомендации по установке и настройке системы
Система инвентаризации MyZCI является многоплатформенной. Она с успехом может выполняться на сервере как под управлением ОС Windows, так и под управлением GNU/Linux. Главные требования системы – это веб-сервер с поддержкой PHP и сервер баз данных MySQL.
После скачивания и распаковки архива прочитайте документацию по установке и использованию системы. Она располагается в подкаталоге docs и переведена мной на русский и украинский языки. В ней достаточно подробно описан процесс установки и настройки, я же расскажу о некоторых дополнительных моментах, не вынесенных в документацию.
Во-первых, в самом конце SQL-скрипта по созданию базы данных и таблиц мной была для универсальности доступа к БД добавлена следующая строка:
grant select,delete,insert,update on zci.* to 'zci'@'%' identified by 'zci';
Если вы собираетесь систему инвентаризации MyZCI и сервер БД MySQL установить на одном компьютере и не планируете наблюдать за базой с других компьютеров в сети, то я бы рекомендовал эту строку перед выполнением скрипта удалить или закомментировать.
Во-вторых, для безопасности желательно закрыть паролем доступ к подкаталогу manage. Сделать это можно в конфигурационном файле веб-сервера Apache. Ниже привожу фрагмент моего конфигурационного файла:
<Directory /var/www/myzci/manage> AuthType basic AuthUserFile /var/www/myzci/manage/.htaccess AuthName “Access” require valid-user</Directory>
Здесь я указываю серверу, что при доступе к каталогу /var/www/myzci/manage нужно требовать авторизацию по паре пользователь/пароль, что хранится в файле /var/www/myzci/manage/.htaccess. Кроме того, не забудьте, что нужно создать файл .htaccess с парами пользователь/пароль с помощью утилиты htpasswd.
При установке PHP также обратите внимание, что обязательно должен быть установлен пакет расширений PECL. Если он отсутствует в репозитории вашего дистрибутива, то, скорее всего, придётся пересобрать PHP из исходных кодов с включенными опциями --enable-dbx и --enable-mysql.
Для ОС семейства Windows пакет PECL для PHP 5.2.6 можно скачать с сайта разработчиков [3].
Если в качестве сервера вы будете использовать систему, базирующуюся на Debian GNU/Linux, то расширения PECL можно добавить так, как описано здесь [4].
Сбор данных с компьютеров
Когда система MyZCI установлена и настроена, то можно приступать к сбору данных с пользовательских машин. Для периодического автоматического обновления информации с зарегистрированных систем мной были разработаны специальные скрипты, которые устанавливаются на стороне клиента и регистрируются в системе.
Ссылки для скачивания архивов с этими скриптами размещены на главной странице системы. Для того чтобы попасть на эту станицу достаточно в адресной строке браузера ввести сетевой адрес и путь в вашей системе MyZCI, например: http://localhost/myzci.
В случае установки скриптов в Windows нужно в произвольный каталог скачать с главной страницы архив win_zci_client.zip и распаковать его. Запустить пакетный файл install.bat и ввести адрес и путь к системе MyZCI.
Для ОС семейства GNU/Linux нужно скачать архив lin_zci_client_deb.tar.gz или lin_zci_client_rpm.tar.gz в зависимости от используемого в вашей инвентаризируемой системе пакетного менеджера. Далее нужно запустить скрипт install.sh и ввести два параметра: адрес сервера и относительный путь к системе MyZCI. Если в системе отсутсвуют пакеты sun‑jdk, lshw или read-edid, то их придётся доустановить.
Для ОС семейства Windows я бы рекомендовал следующий алгоритм по регистрации компьютеров:
- В адресной строке браузера на регистрируемой машине ввести сетевой адрес и путь к системе MyZCI, чтобы попасть на главную страницу системы. Попытаться зарегистрировать компьютер с помощью кнопки на главной странице MyZCI – «Зарегистрировать компьютер».
- Если на страницах управления появилась информация о вносимом в базу компьютере (Меню «Зарегистрированные устройства», пункт «Все компьютеры»), то можно скачивать с главной страницы и устанавливать скрипт автоматического сбора информации – win_zci_client.zip.
- Если же информация не появилась, то возможны два варианта решения проблемы:
- возможно, проблема связана с настройками браузера IE. Нужно установить уровень безопасности как самый низкий либо же внести сервер MyZCI в доверенные узлы;
Для ОС семейства GNU/Linux особых проблем со сбором информации не отмечалось. Отмечу только одно, что для получения полной информации с системы нужно запускать и устанавливать скрипт от имени администратора root. При запуске от имени обычного пользователя не сохраняется информация об установленном в системе мониторе, и ее нужно вводить вручную.
Если устройство невозможно добавить с помощью методов, описанных выше, то его параметры можно ввести вручную на странице «Ввести устройство вручную».
Использование интерфейса
Все основные действия над зарегистрированными устройствами осуществляются со страниц управления. Для входа на страницы управления введите в адресной строке браузера адрес вида: http://<адрес_вашего_сервера/путь_к_MyZCI>/manage, например: http://localhost/myzci/manage.
В «Зарегистрированных устройствах» можно получить список всех компьютеров с группировкой по типам собственности и резерва. С помощью кнопок «Монитор» и «Периферия» можно переключить список на отражение информации о данных типах устройств. Поиск можно проводить для компьютеров по названию хоста, членству в домене и имени пользователя. Для периферии и мониторов поиск производится за серийным номером или названием устройства.
Просмотреть детальную информацию о компьютере можно, щёлкнув по имени хоста, тогда мы перейдём на страницу с характеристиками данного устройства. Для того чтобы изменить некоторую информацию о компьютере: инвентарный номер, место размещения, тип собственности, добавить периферию или монитор или же просто удалить эту запись из системы, нужно нажать на кнопку «Страницы Администрирования» (см. рис. 1).
Рисунок 1. На администрировной странице мы можем изменить некоторую информацию о компьютере
В «Категориях компонентов» можно посмотреть общее количество установленных в ваших компьютерах устройств. Для просмотра списка компьютеров с установленными однотипными компонентами, нужно нажать на ссылку «(просмотр)», размещённую справа возле номера по порядку компонента.
Для того чтобы отследить вносимые в конфигурацию системы изменения, можно воспользоваться пунктом «Отслеживание изменений». Из списка «Тип устройства» выбираем интересующий вас компонент, потом тип изменений «Старые/Неактивные записи» и корректируем, если нужно, дату поиска. После этого нажимаем кнопку «Запрос» и получаем список компьютеров, по которым данные компоненты удалялись. В списке будут отмечены дата установки и дата удаления компонента.
Если нужно произвести сложный поиск компьютеров с использованием характеристик установленных на нём компонентов, то нужно использовать пункт меню «Детальный поиск компьютеров». Поиск можно проводить не только по одному параметру, а по нескольким. Для этого нужно нажать кнопку «Добавить фильтр» и ввести дополнительный параметр поиска в текстовое поле (см. рис. 2). Чтобы определить, существует ли вообще такой параметр поиска, нужно ввести его (либо его часть) в текстовое поле и нажать кнопку «Поиск модели». Откроется дополнительное окно, в котором будет список параметров поиска, которые соответствуют введённому вами, либо будет выдан пустой список, если таковых в системе не зарегистрировано. Если щёлкнуть мышкой в этом списке на нужном вам параметре, то его значение будет скопировано в текстовое поле для поиска.
Рисунок 2. Страничка расширенного поиска по многим параметра
В «Меню администратора» можно изменить статус собственности и резерва для зарегистрированных в системе устройств. Для этого нужно выбрать пункт «Изменить статус компьютера» или «Изменить статус устройства». Изменение типа собственности производится в зависимости от текущего состояния собственности устройства или компьютера. Например, если устройство (или компьютер) находится в состоянии «Собственный», то его собственность можно изменить на «Аренда» или «Окончание собственности», а если в состоянии «Аренда», то на «Собственный» или «Окончание аренды». Аналогично производится изменение статуса резерва. Поиск компьютеров производится по имени хоста, имени пользователя или по членству в домене. Поиск устройств производится по их имени или серийному номеру. Если в обоих случаях категорию поиска не вводить, а просто нажать кнопку «Поиск», то мы получим список всех зарегистрированных компьютеров или устройств в системе с последующей возможностью изменения их статуса (см. рис. 3).
Рисунок 3. Изменение типа собственности и резерва производится очень просто
Вот кратко и всё, что я хотел рассказать о возможностях системы сетевой инвентаризации MyZCI. Если у вас возникнут конструктивные замечания и пожелания по модернизации системы MyZCI, пишите на форум журнала – www.samag.ru/forum. Удачи!
- http://www.zci.sourceforge.net.
- http://www.myzci.sourceforge.net.
- http://museum.php.net/php5/pecl-5.2.6-Win32.zip.
- http://www.jejik.com/articles/2008/07/howto_build_and_install_the_intl_pecl_extension_for_php5_in_debian.