Ocs inventory установка debian. Учет оборудования с OCS Inventory NG и GLPI

Сергей Яремчук

Учет оборудования с OCS Inventory NG и GLPI

Сегодня в любой организации много компьютерной техники и прочего оборудования, учет которого, а также прочих связанных затрат часто входит в обязанности администратора. Применение специализированных систем может значительно упростить эту задачу. В статье рассмотрим решения OCS Inventory NG и GLPI, которые являются хорошей альтернативой проприетарным продуктам.

Возможности OCS Inventory NG и GLPI

Система OCS Inventory NG (OCSNG, Open Computers and Software Inventory New Generation) предназначена для инвентаризации компьютеров в локальной сети, комплектующих ипрограммного обеспечения. Также с ее помощью можно удаленно разворачивать программы на рабочих местах и получать информацию о сетевой конфигурации.

GLPI (Gestion Libre de Parc Informatique) кроме задач по учету компьютеров и входящих в их состав комплектующих, позволяет инвентаризировать прочее оборудование, включая расходные материалы (например, картриджи), а также организовать службу технической поддержки, автоматизируя обработку обращений пользователей. Теперь пользователь, вместо того чтобы бежать или звонить админу, заполняет, зайдя по адресу ресурса, заявку. Обращения обрабатываются с учетом их важности или в порядке очередности. Администратор выигрывает вдвойне – все обращения документируются, и можно спокойно отчитаться перед начальством о проделанной работе и затраченном времени, пользователи по этой же причине перестанут обращаться по мелочам. Не говоря уже о том, что звонки обычно отвлекают от выполнения текущей работы.

Также с его помощью можно сформировать базу знаний, которая будет состоять из заметок, статей и ЧаВО, вести учет поставщиков, договоров. Доступно большое количество отчетов (по договорам, финансовая, за год) и статистик (по заявкам, оборудованию, элементам).

Поддерживается синхронизация календаря по протоколам Ical, Webcal. Функциональность GLPI можно расширить при помощи большого набора плагинов от сторонних разработчиков!

Обе системы русифицированы (с некоторыми оговорками) и распространяются по лицензии GNU GPL.

В GLPI, как и в Kwok Information Server , изначально все данные вводятся вручную и сохраняются в базе данных MySQL. Затем администратор при помощи веб-формы может отобрать любую интересующую его информацию. Начиная с версии 0.65 GLPI поддерживает синхронизацию данных с базами OCSNG, причем для этого не требуется никаких дополнительных модулей. Хотя если в сети уже есть сервер Nagios или Cacti, то данные о компьютерах и прочем оборудовании можно импортировать и оттуда.

Основным плюсом OCS Inventory NG является то, что для сбора информации об установленном оборудовании с клиентских компьютеров и серверов используется программа-агент. Все собранные данные агенты отсылают на сервер управления (management server) в виде XML-потока, сжатого при помощи Zlib, для передачи используется стандартный протокол HTTP/HTTPS.

Сервер OCSNG состоит из 4 компонентов, которые могут быть установлены на одном или нескольких компьютерах:

  • база данных – используется для хранения информации, поддерживается MySQL от 4.1;
  • служба связи – обеспечивает связь по протоколу HTTP между сервером базы данных и программами-агентами, требуется Apache Web Server 1.3.X/2.X с интегрированным Perl (вDebian/Ubuntu пакет libapache-dbi-perl);
  • служба развертывания – предназначена для хранения установочных файлов программ-агентов, подходит любой веб-сервер с поддержкой SSL;
  • консоль управления – просмотр собранных данных в браузере, требуется веб-сервер с поддержкой PHP (с активированными ZIP и GD).

Серверная часть OCSNG может быть установлена на компьютер, работающий под управлением Windows 2000 Professional/Server, XP Professional Edition и 2003, а также Linux, FreeBSD, OpenBSD, NetBSD, Solaris, IBM AIX и MacOS X.

Агент доступен для клиентских и серверных версий Windows от 95 до Server 2008 R2, а также перечисленных Linux (2.4/2.6, x86, x86_64/AMD64, Sparc64, ARM, PowerPC), MacOSX (10.3-10,5), FreeBSD/OpenBSD/NetBSD (x86/Sparc), Solaris 8, 9, 10 (x86/Sparc), IBM AIX (5.1-5.3) и HP-UX.

Следует отметить, что одним из недостатков как данного проекта, так и проекта GLPI является малое количество документации. Хотя, понимая суть процесса, разобраться совсеми нюансами довольно просто.

Установка OCS Inventory в Ubuntu

В середине апреля, после более чем года разработки, вышла новая версия 1.02 OCSNG, о которой и пойдет речь далее. Пакет с OCSNG имеется в репозиториях многих дистрибутивов. Для примера в качестве сервера и клиента выберем Ubuntu 8.04 LTS.

Проверяем, что есть в репозитории Ubuntu.

$ sudo apt-cache search ocsinventory

$ sudo apt-cache show ocsinventory-agent | grep -i version

Version: 1:0.0.8-1

Поэтому будем устанавливать, используя исходные тексты. В зависимостях пакета ocsinventory-server, полученных при помощи команды:

$ sudo apt-cache depends ocsinventory-server

указаны Apache2 и некоторые модули Perl, утилита для изменения файлов настроек ucf и dbconfig-common. Пакет MySQL указан в качестве необязательных зависимостей, поэтому его устанавливаем отдельно:

$ sudo apt-get install mysql-server

Команда:

$ sudo apt-get build-dep ocsinventory-server

в данном случае бесполезна, поэтому устанавливаем все, что необходимо, вручную:

$ sudo apt-get install libapache2-mod-perl2 libdbi-perl libapache-dbi-perl libdbd-mysql-perl libsoap-lite-perl libxml-simple-perl libnet-ip-perl libcompress-zlib-perl php5-gd

Скачиваем с сайта проекта OCSNG архив OCSNG_UNIX_SERVER-1.02.tar.gz и устанавливаем:

$ tar xzfv OCSNG_UNIX_SERVER-1.02.tar.gz

$ cd ./OCSNG_UNIX_SERVER-1.02/

$ sudo ./setup.sh

По ходу установки следует ответить на ряд стандартных вопросов: расположение сервера баз данных, исполняемого и конфигурационного файла веб-сервера, пользователь, от имени которого запускается веб-сервер и так далее.

В большинстве случаев скрипт сам находит все необходимое и достаточно просто подтвердить параметр. Единственное, с чем он не разобрался, это с пользователем и группой, от имени которых запускается Apache. Поэтому вместо предложенного [${APACHE_RUN_USER}] указываем www-data.

Сhecking for XML::Entities PERL module...

*** Warning: PERL module XML::Entities is not installed !

В репозитории пакета, обеспечивающего функции XML::Entities, нет, поэтому его следует установить самостоятельно из CPAN:

$ sudo cpan -i XML::Entities

И повторяем установку. По окончании скрипт предложит инсталлировать консоль администрирования.

В процессе установки в каталоге /etc/apache2/conf.d/ будут созданы конфигурационные файлы для веб-сервера – ocsinventory-server.conf и ocsinventory-reports.conf.

Сами PHP-скрипты, обеспечивающие функции OCSNG, будут скопированы в /usr/share/ocsinventory-reports/ocsreports и подключены к веб-серверу с использованием директивы Alias:

$ cat ocsinventory-reports.conf | grep -i alias

# Alias used to put Administration Server static page (typically PHP) outside

Alias /ocsreports /usr/share/ocsinventory-reports/ocsreports

# Alias to put Deployement package files outside Apache document root directory

Alias /download /var/lib/ocsinventory-reports/download

Поэтому при необходимости управления доступом все изменения следует производить в упомянутых конфигурационных файлах, иначе назначенные на корень права не будут наследоваться.

Кроме этого создается файл, обеспечивающий ротацию журналов раз в неделю.

$ cat /etc/logrotate.d/ocsinventory-server

# Rotate OCS Inventory NG Communication server logs daily

# Save 7 days old logs in compressed mode

/var/log/ocsinventory-server/*.log {

daily

rotate 7

compress

missingok

По окончании следует перезапустить веб-сервер:

$ sudo /etc/init.d/apache2 force-reload

Некоторые пакеты, распространяемые при помощи OCSNG, могут иметь размер больше 8 Мб, поэтому, чтобы не было проблем с их загрузкой, следует установить большее значение переменных post_max_size и upload_max_filesize в файле /etc/php5/apache2/php.ini, например в 10 Мб (по умолчанию – 8 и 2 Мб):

php_value post_max_size 10m

php_value upload_max_filesize 10m

Эти же установки надо изменить в файле ocsinventory-reports.conf.

Набираем в браузере http://localhost/ocsreports/install.php и в появившемся окне вводим логин и пароль для доступа к MySQL. По умолчанию в процессе установки для доступа к базе ocsweb будет создана учетная запись ocs с паролем ocs. Если только доступ к базе не ограничен локальной системой, то в целях безопасности пароль следует изменить:

$ mysql -uroot -prootsecret

mysql> UPDATE mysql.user SET Password = PASSWORD("ocspasswd") WHERE User = "ocs";

mysql> FLUSH PRIVILEGES;

mysql> exit

Новое значение пароля следует прописать в файле /usr/share/ocsinventory-reports/ocsreports/dbconfig.inc.php:

$_SESSION["PSWD_BASE"]="ocspasswd"

И в ocsinventory-server.conf:

PerlSetVar OCS_DB_PWD ocspasswd

Локализация

Переходим на страницу http://localhost/ocsreports, для регистрации используем логин admin с паролем admin. Щелкнув здесь же по флагу, можно активировать русский язык интерфейса, но сразу после установки это привело к появлению нечитаемых символов.

Единственным материалом по локализации интерфейса OCS Inventory является статья Евгения Бражко , но она относится к версии 1.02RC1, вышедшей в марте 2008 года, и многие вопросы, которые в ней описаны, в текущей версии уже решены. Так, анализ HTML-кода страницы показал, что она выдается в нужной кодировке:

Интерфейс локализуется при помощи языкового файла russian.txt, расположенного в /usr/share/ocsinventory-reports/ocsreports/languages. В меню Configurations есть отдельный пункт Language file, позволяющий его редактировать. Но открыв файл russian.txt в текстовом редакторе, поддерживающем СР1251, обнаруживаем только набор нечитаемых символов.

Вывод команды file:

$ file russian.txt

А первая строка файла явно указывает на нужную кодировку.

$ head -n 1 russian.txt

0 windows-1251

Из этого делаем вывод – что-то не то с самим файлом, поэтому берем аналогичный с RC1 или другого источника (например, на сайте журнала в разделе «Исходный код») и подменяем его, не забыв установить нужные права доступа.

$ sudo chown root:www-data russian.txt

После этого все надписи выводятся на русском.

Чтобы корректно выводились названия программ, установленных на Windows-системах, следует в файле /usr/share/ocsinventory-reports/ocsreports/preferences.php установить в «1» значение UTF8_DEGREE:

// 0 For non utf8 database, 1 for utf8

define("UTF8_DEGREE", 1);

echo "$td3".htmlentities(textDecode($item->PUBLISHER))."

$td3".htmlentities(textDecode($item->NAME))."

$td3".textDecode($item->VERSION)."

$td3".(htmlentities(textDecode($item->COMMENTS))? ?htmlentities(textDecode($item->COMMENTS)): "N/A")." ";

Меняем на:

echo "$td3".textDecode($item->PUBLISHER)."

$td3".textDecode($item->NAME)."

$td3".textDecode($item->VERSION)."

$td3".(htmlentities(textDecode($item->COMMENTS))? textDecode($item->COMMENTS):"N/A")." ";

После этого список программ, установленных на конкретном компьютере, будет выводиться корректно. Страница в PDF, создаваемая при помощи кнопки «Напечатать эту страницу», которая расположена в самом низу, также выглядела корректно. Хотя в общем списке ПО по-прежнему будет нечитаемый текст.

Установка агента

Агент для Windows написан на C++, его можно установить вручную, при помощи logon скрипта или правил GPO. Агент для Linux написан на Perl и С. Для его установки потребуется наличие некоторых модулей Perl (XML и Zlib) и dmidecode (обеспечивает сбор данных из BIOS об оборудовании в соответствии со стандартами SMBIOS/DMI). В Linux агент устанавливается вручную. Сначала рассмотрим этот вариант.

Если клиент устанавливается на том же компьютере, что и сервер, практически все необходимые пакеты для удовлетворения зависимостей уже будут. Иначе устанавливаем:

$ sudo apt-get install libcompress-zlib-perl libnet-ip-perl libnet-ssleay-perl libwww-perl libxml-simple-perl po-debconf ucf dmidecode pciutils

$ tar xzvf OCSNG_UNIX_AGENT-1.02.tar.gz

$ cd Ocsinventory-Agent-1.0.1

$ perl Makefile.PL

$ make

$ sudo make install

После ввода последней команды поступит запрос на настройку агента.

Далее указываем адрес или имя сервера, создаем тег (с его помощью можно собрать системы в целевую группу, например, по принципу размещения) для агента, активируем задачу для cron, каталог для хранения файлов и так далее. По окончании выдается запрос на отсылку собранных данных о компьютере на сервер:

Do you want to send an inventory of this machine?

Please enter "y" or "n"?> [y]

Accountinfo file doesn"t exist. I create an empty one.

-> Success!

В итоге в /var/lib/ocsinventory-agent будет создан подкаталог с файлами, содержащими текущую конфигурацию компьютера. Например, в ocsinv.adm содержатся тег и название системы, под которым она будет видна в консоли управления.

$ cat /var/lib/ocsinventory-agent/http\:__localhost_ocsinventory/ocsinv.adm

TAG

Ubuntu

Практически сразу после установки агента сведения о новой системе появятся в консоли управления во вкладке «Все компьютеры».

При возникновении проблем можно запустить агента в режиме отладки:

$ ocsinventory-agent -l /tmp –debug --server http://localhost/ocsinventory

По умолчанию во вкладке «Все компьютеры» выводятся 7 характеристик клиентских машин, но при помощи раскрывающегося списка Add column можно добавить еще 23 поля. Хотя в некоторых случаях замечены ошибки в определении параметров. Так, на системе с такими характеристиками:

$ dmesg | grep -i processor

[ 97.725563] powernow-k8: Found 1 AMD Athlon(tm) 64 X2 Dual Core Processor 3600+ processors (2 cpu cores) (version 2.20.00)

[ 0.000000] Detected 2010.408 MHz processor.

В консоли OCS Inventory было выведено – 1000 Мгц, но при необходимости данные можно скорректировать вручную. По разным причинам в базу компьютер может быть занесен несколько раз, для удаления дубликатов существует одноименная вкладка, в которой одинаковые системы можно отобрать по нескольким характеристикам (имя, МАС-адрес, серийный номер).

Текущая версия агента для Windows 4.0.5.4, архив OCSNG_WINDOWS_AGENT_1.02.zip с установочными файлами можно скачать с сайта проекта. Судя по всему, в нем уже исправлена ошибка, которая приводила к тому, что русские буквы, начиная с "х"(0xF4) заменялись английским иксом. Во всяком случае, на тестовых системах все работало правильно. Как вариант можно использовать специальную сборку OCSNG_WINDOWS_AGENT_1.02_RC2_OTEA.zip (версия агента 4.0.4.9) .

Самым простым вариантом установки является запуск исполняемого файла OcsAgentSetup.exe, в этом случае будет произведена стандартная установка, по окончании которой агент будет прописан в качестве сервиса. На последнем этапе указываем имя или IP-адрес OCSNG сервера и устанавливаем флажок Immediatly launch inventory, чтобы сразу же отправить отчет.

Все настройки будут сохранены в файле service.ini каталога, в который установлен агент.

В Vista следует открыть его и добавить параметр /DEBUG в строку запуска:

Miscellaneous=/SERVER:192.168.0.10 /PNUM:80 /DEBUG

При изменении оборудования или ПО агента вызвать принудительно, набрав в командной строке:

> "C:\Program Files\OCS Inventory Agent\OCSInventory.exe" /SERVER:ocsng_server /PNUM:80 /NOW

Также агента (файл ocsagent.exe, являющийся zip-архивом) можно импортировать в базу OCSNG, выбрав во вкладке «Агент» и указав место расположения файла. В этом случае он будет доступен с любого компьютера сети.

Кроме функций сетевой инвентаризации, OCSNG имеет возможность развертывания пакетов и запуска команд, записанных в файле (например, bat/vbs) на клиентских компьютерах (кроме Vista), информация о которых находится в инвентаризационной системе. При необходимости установки одного приложения на большое количество систем такая функциональность очень выручает.

Для начала пакет нужно создать. Переходим в меню Deployment -> Build и заполняем поля New package building. Название пакета должно быть уникальным, и желательно отражать его назначение. Параметр Priority определяет порядок размещения пакетов. Что, собственно, делать с пакетом, определяет поле Action.

Здесь три возможных значения:

  • Store – копировать на целевую систему;
  • Execute – копировать и выполнить с командой;
  • Launch – копировать и запустить.

Параметры в User notifications позволяют вывести соответствующее предупреждение пользователю, разрешить ему отмену выполнения задачи. Созданный пакет загружается в каталог /var/lib/ocsinventory-reports/download/timestamp.

При этом timestamp получается уникальным.

$ ls /var/lib/ocsinventory-reports/download/

Теперь выбираем компьютер, на котором хотим установить пакет, переходим в меню Customization, в самом низу выбираем ссылку add package, указываем на пакет и нажимаем в поле Affect. Подтверждаем свой выбор. В Customization появится информация о состоянии задачи, а в таблице в Activate будет выводиться статистика.

По умолчанию агент подключается к серверу раз в сутки, тогда и будет произведена установка. Можно ускорить этот процесс, вызвав подключение принудительно, как это показано выше. После подключения агента к серверу состояние пакета должно измениться с WAITING_NOTIFICATIONS на NOTIFIED, а затем Success. Пакет будет сохранен в каталоге C:\Program Files\OCS Inventory Agent\download\TIMESTAMP. А все связанные сообщения можно найти в файле download.log.

Кроме выдачи информации о «своем» компьютере, агенты в разных подсетях сканируют сеть в поисках MAC-адресов, принадлежащих других системам. Такая функция называется IP discovery и позволяет находить другие устройства, на которые нельзя установить агент (например, свитчи, принтеры и так далее).

Установка GLPI

Установка GLPI достаточно проста. В репозиториях дистрибутивов нужный пакет есть, но его версия обычно сильно отстает.

$ sudo apt-cache search glpi

glpi - IT and Asset management software

$ sudo apt-cache show glpi | grep -i version

Version: 0.68.3.2-1

Актуальной на момент написания статьи является версия 0.71.5, вышедшая в январе 2009 года. Кроме этого, на странице загрузки доступен предрелиз 0.72-RC2 и срез CVS-архива.

Для установки просто распаковываем скачанный архив в корневой каталог веб-сервера:

$ sudo tar xzvf glpi-0.71.5.tar.gz -C /var/www

$ cd /var/www/glpi

Устанавливаем для некоторых каталогов владельца и группу-владельца:

$ sudo chown www-data:www-data config files files/* inc

Далее набираем в браузере http://localhost/glpi выбираем язык (в списке есть русский), принимаем условия GPL и следуем указаниям мастера установки. Самый главный этап – «Проверка окружения на совместимость с GLPI», где следует внимательно прочитать и выполнить все рекомендации.

Например, по указанию мастера параметр memory_limit в php.ini следует установить в значение, большее чем 32 Мб:

$ grep -i memory_limit /etc/php5/apache2/php.ini

memory_limit = 128M

Выполняем все требования, проверяем повторно и, если все нормально, нажимаем Continue. Теперь собственно установка – вводим данные для доступа к MySQL, название базы данных, и все.

Чтобы GLPI автоматически проверял почту, отправлял уведомления, следует создать задание для пользователя, от имени которого работает веб-сервер (нужен пакет php5-cli):

$ sudo crontab -u www-data -e

*/5 * * * * /usr/bin/php5 /var/www/glpi/front/cron.php &>/dev/null

По умолчанию в GLPI создаются четыре учетные записи с разными правами и возможностями (через дробь указан пароль):

  • glpi/glpi – администратор;
  • tech/tech – технический специалист;
  • normal/normal – обычная учетная запись (возможность просмотра данных);
  • post-only/post-only – только обращение в службу поддержки.

GLPI поддерживает импорт учетных данных из AD или другой LDAP.

Регистрируемся в системе как glpi. Для локализации интерфейса в меню Setting -> Select Language выбираем русский язык, после этого все новые учетные записи будут использовать по умолчанию выбранный язык. Новые пользователи добавляются в одноименной вкладке, там несколько некорректный перевод. Так, логину соответствует поле «Имя пользователя», это иногда сбивает с толку. Чтобы не было путаницы, можно изменить значение в файле /var/www/glpi/locales/ru_RU.php:

$LANG["setup"]="Имя пользователя";

Если OCSNG и MySQL установлены на локальной машине, то данные для подключения к OCSNG будут найдены автоматически. Иначе необходимо будет заполнить информацию о сервере OCSNG вручную.

По умолчанию синхронизируется только часть параметров, чтобы в базу данных GLPI были перенесены и компоненты компьютеров, следует разрешить их синхронизацию, установив флажок напротив нужного в положение «Глобальный импорт».

Кроме этого, во вкладке «Инструменты» появится пункт OCSNG, при помощи имеющихся здесь ссылок можно производить синхронизацию и импортирование компьютеров между OCSNG и GLPI.

Полученные данные появляются во вкладке «Оборудование». Здесь несколько подпунктов, переход в некоторые из них позволяет получить список некоторых компонентов, входящих в компьютер («Мониторы», «Принтеры»), отдельного оборудования («Картриджи», «Телефоны»), а также ПО. Импортированные компьютеры доступны в одноименном подпункте.

Выбрав компьютер или устройство, мы получаем доступ к 12 вкладкам, в которых можно просмотреть и скорректировать данные об оборудовании, сопоставить ответственного, просмотреть заявки, добавить заметки, сделать отметку о выдаче во временное использование, просмотреть историю и так далее.

К сожалению, на данный момент список импортированных с OCSNG компонентов компьютера, написанный на русском языке, выводится нечитаемым текстом.

Пользователей GLPI можно объединить в группы, кроме этого существует более глобальное понятие – «Организация». Сразу после установки создается «Основная организация», в которую и будут включены все компоненты. Предусмотрено создание других организаций с установлением подчиненности между ними (структуры). Но работа с организациями реализована неудобно, так перенос техники в другую организацию усложнен и неудобен. Предусмотрен экспорт данных в PDF, CVS и SLK (Symbolic Link).

По умолчанию при экспорте в PDF вместо русских букв выводятся знаки вопросов, это происходит по двум причинам: стандартная функция экспортирует данные в кодировке ISO-8859-1, которую и поддерживает используемый по умолчанию шрифт. Подсказка была найдена на форуме OPENNET . Заменяем в скрипте /var/www/glpi/inc/export.function.php вызов функции utf8_decode на utf8_decode_cyr:

inc/export.function.php:

Return iconv("UTF-8","Windows-1251",$value);

По умолчанию для экспорта используется шрифт Helvetica, его бы я и рекомендовал оставить. Если заменить шрифт другим, его имя придется править не только в двух местах файла export.function.php:

$ cat export.function.php | grep -i selectFont

$pdf->selectFont(GLPI_ROOT."/lib/ezpdf/fonts/Helvetica.afm");

Но и в двух файлах, находящихся в lib/ezpdf.

$ sudo apt-get install ttf2pt1

Запускаем:

$ ttf2pt1 -l cyrillic -A Helvetica.ttf Helvetica

Теперь копируем файлы вместо старых, не забыв подправить права:

$ sudo cp -v Helvetica* /var/www/glpi/lib/ezpdf/fonts/

`Helvetica.afm" -> `/var/www/glpi/lib/ezpdf/fonts/Helvetica.afm"

`Helvetica.t1a" -> `/var/www/glpi/lib/ezpdf/fonts/Helvetica.t1a"

`Helvetica.ttf" -> `/var/www/glpi/lib/ezpdf/fonts/Helvetica.ttf"

Исправленный вариант шрифтов, можно найти в разделе «Исходный код» сайта журнала . После этого PDF будет выводиться корректно.

Установка плагинов для GLPI производится простой распаковкой в подкаталог glpi/plugins, после чего плагин будет доступен для настройки в меню «Установки -> Плагины». Ссайта проекта можно скачать приблизительно 50 самых разнообразных плагинов.

Заключение

Интерфейсы, как OCSNG, так и GLPI, достаточно просты для освоения, нужно потратить полчаса, и вы будете хорошо ориентироваться. К сожалению, до конца вопрос локализации так и не решен. Так, для Windows в OCSNG неправильно отображаются кириллические наименования установленных программ и компонентов оборудования. Обсуждение всех вопросов по локализации можно найти на форумах проекта OCSNG и OPENNET , некоторым они помогают, у некоторых не получается все решить.

  1. Сайт проекта OCS Inventory NG – http://www.ocsinventory-ng.org . .
  2. Страница Wiki проекта GLPI на русском –

Пишу по памяти. По-этому возможны небольшие неточности!

MySQL необходимо использовать 4.1 или 5.0.

MySQL 5.1 — использовать нельзя — нет драйвера (по-моему, точно не помню,p5-DBI под MySQL5.1).

У меня же стоит MySQL-5.0 и apache 2.2 и на них вертятся несколька сервисов, поэтому я буду ставить немного по-другому.Apache в связке с MySQL, PHP и PHP-extension у меня установлены.

Да и база должна быть переведена в InnoDB. (Кто не знает, меняйте в my.cnf).

Сначала доустановим mod_perl2(т.к. apache2)

#ee /usr/local/etc/apache22/httpd.conf

Добавляем строку:

LoadModule perl_module libexec/apache22/mod_perl.so

Раскомментируем строку, ибо сюда программа добавит конфигурационный файл:

Include etc/apache22/Includes/*.conf

Вручную доустанавливаем XML::Entities из CPAN. Его нет в зависимостях порта,

но программа потребует его установить.

#cpan -i XML::Entities

Ставим ocsinventory-ng

# cd /usr/local/share/ocsinventory-ng

Создаем директории для программы:

Запускаем установку.

Есть и другой вариант: результат тотже:

#cd /usr/ports/net-mgmt/ocsinventory-ng/

# mkdir -p /etc/logrotate.d/ocsinventory-NG

# mkdir /usr/local/www/ocsinventory-NG

#cd OCSNG_UNIX_SERVER-1.02.1/

+———————————————————-+| |

| Welcome to OCS Inventory NG Management server setup ! |

| |+———————————————————-+

CAUTION: If upgrading Communication server from OCS Inventory NG 1.0 RC2 and

previous, please remove any Apache configuration for Communication Server!

Do you wish to continue ([y]/n)?y

Assuming Communication server 1.0 RC2 or previous is not installed

on this computer.

Starting OCS Inventory NG Management server setup from folder /usr/local/share/ocsinventory-ng

Storing log in file /usr/local/share/ocsinventory-ng/ocs_server_setup.log

+———————————————————-+

| Checking for database server properties… |

+———————————————————-+

Your MySQL client seems to be part of MySQL version 5.0.

Your computer seems to be running MySQL 4.1 or higher, good 😉

Which host is running database server ?

OK, database server is running on host localhost 😉

On which port is running database server ?

OK, database server is running on port 3306 😉

+———————————————————-+

| Checking for Apache web server daemon… |

+———————————————————-+

Where is Apache daemon binary ?

OK, using Apache daemon /usr/local/sbin/httpd 😉

+———————————————————-+

| Checking for Apache main configuration file… |

+———————————————————-+

Where is Apache main configuration file ?

Вот тут прописываем правильно, учитывая, что у нас Apache2.2 и находится он в apache22:

OK, using Apache main configuration file /usr/local/etc/apache22/httpd.conf 😉

+———————————————————-+

| Checking for Apache user account… |

+———————————————————-+

Which user account is running Apache web server ?

OK, Apache is running under user account www 😉

+———————————————————-+

| Checking for Apache group… |

+———————————————————-+

Which user group is running Apache web server ?

OK, Apache is running under users group www 😉

+———————————————————-+

| Checking for PERL Interpreter… |

+———————————————————-+

Found PERL Intrepreter at 😉

Where is PERL Intrepreter binary ?

OK, using PERL Intrepreter /usr/bin/perl 😉

Do you wish to setup Communication server on this computer ([y]/n)?

+———————————————————-+

| Checking for Make utility… |

+———————————————————-+

OK, Make utility found at 😉

+———————————————————-+

| Checking for Apache Include configuration directory… |

+———————————————————-+

Setup has found Apache Include configuration directory in.

If you are not using Include directive, please enter ‘no’.

Where is Apache Include configuration directory ?/usr/local/etc/apache22/Include/

OK, Apache Include configuration directory /usr/local/etc/apache22/Include/ found 😉

+———————————————————-+

| Checking for Apache mod_perl version… |

+———————————————————-+

Checking for Apache mod_perl version 1.99_22 or higher

Checking for Apache mod_perl version 1.99_21 or previous

Found that mod_perl2 version 2.9_21 or previous is available.

OK, Apache is using mod_perl2 version 2.9_21 or previous 😉

+———————————————————-+

| Checking for Communication server log directory… |

+———————————————————-+

Communication server can create detailled logs. This logs can be enabled

by setting interger value of LOGLEVEL to 1 in Administration console

menu Configuration.

Where to put Communication server log directory ?

OK, Communication server will put logs into directory /var/log/ocsinventory-NG 😉

+———————————————————-+

+———————————————————-+

Checking for DBI PERL module…

Checking for Apache::DBI PERL module…

Found that PERL module Apache::DBI is available.

Checking for Compress::Zlib PERL module…

Found that PERL module Compress::Zlib is available.

Checking for SOAP::Lite PERL module…

Found that PERL module SOAP::Lite is available.

+———————————————————-+

| OK, looks good 😉 |

| Configuring Communication server Perl modules… |

+———————————————————-+

WARNING: INSTALLSITESCRIPT is not a known parameter.

Checking if your kit is complete…

‘INSTALLSITESCRIPT’ is not a known MakeMaker parameter name.

Writing Makefile for Apache::Ocsinventory

+———————————————————-+

| OK, looks good 😉 |

| Preparing Communication server Perl modules… |

+———————————————————-+

+———————————————————-+

| OK, prepare finshed 😉 |

| Installing Communication server Perl modules… |

+———————————————————-+

+———————————————————-+

| OK, Communication server Perl modules install finished;-)|

| Creating Communication server log directory… |

+———————————————————-+

Creating Communication server log directory /var/log/ocsinventory-NG.

Fixing Communication server log directory files permissions.

Configuring logrotate for Communication server.

Writing communication server logrotate to file /etc/logrotate.d/ocsinventory-NG

+———————————————————-+ъ

| OK, Communication server log directory created 😉 |

| Now configuring Apache web server… |

+———————————————————-+

Writing communication server configuration to file /usr/local/etc/apache22/Include/ocsinventory.conf

+———————————————————-+

| OK, Communication server setup sucessfully finished 😉

| Please, review /usr/local/etc/apache22/Include/ocsinventory.conf

| to ensure all is good. Then restart Apache daemon.

+———————————————————-+

просят просмотреть файл ocsinventory.conf.

Do you wish to setup Administration server (web administration console)

on this computer ([y]/n)?

+———————————————————-+

| Checking for Apache root document directory… |

+———————————————————-+

Where is Apache root document directory ?/usr/local/www/data/ocsinventory-NG

OK, Apache root document directory is /usr/local/www/ocsinventory-NG 😉

+———————————————————-+

| Checking for required Perl Modules… |

+———————————————————-+

Checking for DBI PERL module…

Found that PERL module DBI is available.

Checking for DBD::mysql PERL module…

Found that PERL module DBD::mysql is available.

Checking for XML::Simple PERL module…

Found that PERL module XML::Simple is available.

Checking for Net::IP PERL module…

Found that PERL module Net::IP is available.

+———————————————————-+

| Installing files for Administration server… |

+———————————————————-+

Creating directory /usr/local/www/ocsinventory-NG/download.

Creating directory /usr/local/www/ocsinventory-NG/ocsreports.

Copying files to /usr/local/www/ocsinventory-NG/ocsreports.

Fixing directories and files permissions.

Configuring IPDISCOVER-UTIL Perl script.

Installing IPDISCOVER-UTIL Perl script.

Fixing permissions on IPDISCOVER-UTIL Perl script.

+———————————————————-+

| OK, Administration server installation finished 😉 |

| Point your browser to http://server/ocsreports to |

| configure database server and create/update schema. |

+———————————————————-+

Setup has created a log file /usr/local/share/ocsinventory-ng/ocs_server_setup.log. Please, save this file.

If you encounter error while running OCS Inventory NG Management server,

we can ask you to show us his content !

DON’T FORGET TO RESTART APACHE DAEMON !

Enjoy OCS Inventory NG 😉

По вежливой просьбе мы перезапускаем APACHE т.к. OCS уже сам создал конфиг в директории

APACHE22. Необходимо добавить алиас в httpd.conf, если OCS не захотел нормально по предложенной схеме (http://server/ocsreports) стартовать. Однако рекомендую править /usr/local/etc/apache22/Include/ocsinventory.conf. По-моему там, по умолчанию, неправильно указаны опции директории, т.е:

AllowOverride None

Order allow,deny

Если же не хотите заморачиваться, создайте alias в httpd.conf:

# ocsinventory-NG

Alias /ocsreports «/usr/local/www/ocsinventory-NG/ocsreports/»

AllowOverride None

Order allow,deny

Теперь перезапускаем APACHE:

#apachectl restart

Некоторые пакеты, распространяемые при помощи OCSNG, могут иметь размер

больше 8 Мб, поэтому установим большее значение переменных post_max_size и upload_max_filesize в файле php.ini. Эти же установки следует изменить в ocsinventory-reports.conf:

php_value post_max_size 10m

php_value upload_max_filesize 10m

Проверьте есть ли пароль у root MySQL. Если нет назначим.

# mysqladmin -u root password newpasswd

Набираем в браузере http://localhost/ocsreports/install.php и в появившемся окне

вводим логин и пароль для доступа к MySQL. По умолчанию в процессе

установки для доступа к базе ocsweb будет создана учетная запись “ocs” с паролем “ocs”.

MySql login: root

MySql password: newpasswd

MySql HostName: localhost

WARNING: You will not be able to build any auto deployment package with size greater than 8M.

You must raise both post_max_size and upload_max_filesize in your php.ini to correct this.

MySql config file successfully written

Please wait, database update may take up to 30 minutes……………………………………………………………………………………………………………………………………………….

Database successfully generated

Database engine checking……………………

ERROR: InnoDB conversion failed, install InnoDB mysql engine support on your server

(Try to uncomment «#skip-innodb» in your mysql config file.)

Reinstall when corrected.

ERROR: HEAP conversion failed, install HEAP mysql engine support on your server

or you will experience severe performance issues.

Database engine successfully updated (21 table(s) altered)

WARNING: files/ocsagent.exe missing, if you do not reinstall the DEPLOY feature won’t be available

Table ‘files’ was empty

No subnet.csv file to import

Network netid computing. Please wait…

Network netid was computed=>

Netmap netid computing. Please wait…

Netmap netid was computed=> 0 successful, 0 were already computed, 0 were not computable

Cleaning orphans…………………

0 orphan lines deleted

Cleaning netmap…

0 netmap lines deleted

Please enter the label of the windows client tag input box:

(Leave empty if you don’t want a popup to be shown on each agent launch).

Введем название и нажмем кнопку «Отправить»

WARNING: You will not be able to build any auto deployment package with size greater than 8M.

You must raise both post_max_size and upload_max_filesize in your php.ini to correct this.

Installation finished you can log in index.php with

Click here to enter OCS-NG GUI

Не забывая нажать на Российский флаг, вводим

Логин по умолчанию — admin

пароль по умолчанию — admin

И наблюдаем следующее:

Подключаем клиентов.

Скачиваем модуль клиента с OCS Inventory NG Agents http://www.ocsinventory-ng.org.

Распаковываем и ставим.

Не забываем прописать адрес сервера OCS Inventory и порт 80.

Сегодня в организации любого размера довольно много компьютерной техники и прочего оборудования. Учет которого, а также прочих связанных затрат, часто входит в обязанности администратора. Применение специализированных систем может значительно упростить эту задачу. В статье рассмотрим решения OCS Inventory NG и GLPI, которые являются хорошей альтернативой проприетарным продуктам.

Возможности OCS Inventory NG и GLPI

Система OCS Inventory NG (OCSNG, Open Computers and Software Inventory New Generation) предназначена для инвентаризации компьютеров в локальной сети, комплектующих и программного обеспечения. Также с ее помощью можно удаленно разворачивать программы на рабочих местах и получать информацию о сетевой конфигурации. GLPI (Gestion Libre de Parc Informatique) кроме задач по учету компьютеров и в ходящих в их состав комплектующих, позволяет инвентаризировать прочее оборудование включая расходные материалы (например картриджи), а также организовать службу технической поддержки автоматизируя обработку обращений пользователей. Теперь пользователь вместо того, чтобы бежать или звонить админу, заполняет зайдя по адресу ресурса заявку. Обращения обрабатываются с учетом их важности или в порядке очередности. Администратор выигрывает в двойне – все обращения документируются, и можно спокойно отчитаться перед начальством о проделаной работе и затраченном времени, пользователи по этой же причине перестанут обращаться по мелочам. Не говоря уже о том, что звонки обычно отвлекают от выполнения текущей работы. Также с его помощью можно сформировать базу знаний, которая будет состоять из заметок, статей и ЧаВО, вести учет поставщиков, договоров. Доступно большое количество отчетов (по договорам, финансовая, за год) и статистик (по заявкам, оборудованию, элементам).
Поддерживается синхронизация календаря по протоколам Ical, Webcal.
Функциональность GLPI можно расширить при помощи большого набора плагинов от сторонних разработчиков!
Обе системы русифицированы (с некоторыми оговорками) и распространяются по лицензии GNU GPL.
В GLPI, как и в изначально все данные вводятся вручную и сохраняются в базу данных MySQL. Затем администратор при помощи веб-формы может отобрать любую интересующую его информацию. Начиная с версии 0.65 GLPI поддерживает синхронизацию данных с базами OCSNG, причем для этого не требуется ни каких дополнительных модулей. Хотя если в сети уже есть сервер Nagios или Cacti, то данные о компьютерах и прочем оборудовании можно импортировать и от туда.
Основным плюсом OCS Inventory NG является то, что для сбора информации об установленном оборудовании с клиентских компьютеров и серверов используется программа-агент. Все собранные данные, агенты отсылают на сервер управления (management server), в виде XML потока сжатого при помощи Zlib, для передачи используется стандартный протокол HTTP/HTTPS. Сервер OCSNG состоит из 4 компонентов, которые могут быть установленны на одном или нескольких компьютерах:

  • база данных — используется для хранения информации, поддерживается MySQL от 4.1;
  • служба связи — обеспечивает связь по протоколу HTTP между сервером базы данных и программами-агентами, требуется Apache Web Server 1.3.X/2.X с интегрированным Perl (в Debian/Ubuntu пакет libapache-dbi-perl);
  • служба развертывания – предназначен для хранения установочных файлов программ-агентов, подходит любой веб-сервер с поддержкой SSL;
  • консоль управления – просмотр собранных данных в браузере, требуется веб-сервер с поддержкой PHP (с активированными ZIP и GD).

Серверная часть OCSNG может быть установлена на компьютер работающий под управлением Windows 2000 Professional/Server, XP Professional Edition и 2003, а также Linux, FreeBSD, OpenBSD, NetBSD, Solaris, IBM AIX и MacOS X. Агент доступен для клиенских и серверных версий Windows от 95 до Server 2008 R2, а также перечисленных Linux (2.4/2.6, x86, x86_64/AMD64, Sparc64, ARM, PowerPC), MacOS X (10.3 – 10,5), FreeBSD/OpenBSD/NetBSD (x86/Sparc), Solaris 8, 9, 10 (x86/Sparc), IBM AIX (5.1 — 5.3) и HP-UX.
Следует отметить, что одним из недостатков, как данного проекта, так и проекта GLPI является малое количество документации. Хотя, понимая суть процесса, разобраться со всеми ньюансами довольно просто.

Установка OCS Inventory в Ubuntu

В середине апреля, после более чем года разработки, вышла новая версия 1.02 OCSNG, о которой и пойдет речь далее. Пакет с OCSNG имеется в репозитариях многих дистрибутивов. Для примера в качестве сервера и клиента выберем Ubuntu 8.04 LTS. Проверяем, что есть в репозитарии Ubuntu.

$ sudo apt-cache search ocsinventory ocsinventory-reports - Hardware and software inventory tool (Administration Console) ocsinventory-server - Hardware and software inventory tool (Communication Server) ocsinventory-agent - Hardware and software inventory tool (client)

Хотя это не самая актуальная версия на данный момент:

$ sudo apt-cache show ocsinventory-server | grep -i version Version: 1.01-3 $ sudo apt-cache show ocsinventory-agent | grep -i version Version: 1:0.0.8-1

Поэтому будем устанавливать, используя исходные тексты. В зависимостях пакета “ocsinventory-server” полученных при помощи “sudo apt-cache depends ocsinventory-server”, указан Apache2 и некоторые модули Perl, утилита для изменения файлов настроек ucf и dbconfig-common. Пакет MySQL указан в качестве необязательных зависимостей, поэтому его устанавливаем отдельно.

$ sudo apt-get install mysql-server

$ sudo apt-get build-dep ocsinventory-server

В данном случае бесполезна, поэтому устанавливаем все что необходимо вручную:

$ sudo apt-get install libapache2-mod-perl2 libdbi-perl libapache-dbi-perl libdbd-mysql-perl libsoap-lite-perl libxml-simple-perl libnet-ip-perl libcompress-zlib-perl php5-gd

Скачиваем с сайта проекта OCSNG архив OCSNG_UNIX_SERVER-1.02.tar.gz и устанавливаем:

$ tar xzfv OCSNG_UNIX_SERVER-1.02.tar.gz $ cd ./OCSNG_UNIX_SERVER-1.02/ $ sudo ./setup.sh

По ходу установки следует ответить на ряд стандартных вопросов: расположение сервера баз данных, исполняемого и конфигурационного файла веб-сервера, пользователь, от имени которого запускается веб-сервер и так далее. В большинстве случаев скрипт сам находит все необходимое и достаточно просто подтвердить параметр. Единственное с чем он не разобрался это с пользователем и группой от имени, которых запускается Apache. Поэтому вместо предложенного
[${APACHE_RUN_USER}] указываем www-data.
Далее производится проверка установленных модулей Perl. И в случае если нужный не будет найден, выдается соответствующее сообщение. Так в зависимостях Ubuntu не указан модуль XML::Entities.

Сhecking for XML::Entities PERL module... *** Warning: PERL module XML::Entities is not installed !

В репозитарии пакета обеспечивающего функции XML::Entities нет, поэтому его следует установить самостоятельно из CPAN.

$ sudo cpan -i XML::Entities

И повторяем установку. По окончании скрипт предложит инсталлировать консоль администрирования.
В процессе установки в каталоге /etc/apache2/conf.d/ будут созданы конфигурационные файлы для веб-сервера – ocsinventory-server.conf и ocsinventory-reports.conf.
Сами PHP скрипты обеспечивающие функции OCSNG будут скопированы в /usr/share/ocsinventory-reports/ocsreports и подключены к веб-серверу с использованием директивы Alias:

$ cat ocsinventory-reports.conf | grep -i alias # Alias used to put Administration Server static page (typically PHP) outside Alias /ocsreports /usr/share/ocsinventory-reports/ocsreports # Alias to put Deployement package files outside Apache document root directory Alias /download /var/lib/ocsinventory-reports/download

Поэтому при необходимости управления доступом все изменения следует производить в упомянутых конфигурационных файлах, иначе назначенные на на корень права не будут наследоваться.
Кроме этого создается файл, обеспечивающий ротацию журналов раз в неделю.

$ cat /etc/logrotate.d/ocsinventory-server # Rotate OCS Inventory NG Communication server logs daily # Save 7 days old logs in compressed mode /var/log/ocsinventory-server/*.log { daily rotate 7 compress missingok }

По окончании следует перезапустить веб-сервер.

$ sudo /etc/init.d/apache2 force-reload

Некоторые пакеты, распространяемые при помощи OCSNG, могут иметь размер больше 8 Мб, поэтому чтобы не было проблем с их загрузкой следует установить большее значение переменных post_max_size и upload_max_filesize в файле /etc/php5/apache2/php.ini например в 10 Мб (по умолчанию — 8 и 2 Мб). Этих же установки следует изменить в ocsinventory-reports.conf:

Php_value post_max_size 10m php_value upload_max_filesize 10m

Набираем в браузере http://localhost/ocsreports/install.php и в появившемся окне вводим логин и пароль для доступа к MySQL. По умолчанию в процессе установки для доступа к базе ocsweb будет создана учетная запись “ocs” с паролем “ocs”. Если только доступ к базе не ограничен локальной системой, то в целях безопасности пароль следует изменить.

$ mysql -uroot -prootsecret mysql> UPDATE mysql.user SET Password = PASSWORD("ocspasswd") WHERE User = "ocs"; mysql> FLUSH PRIVILEGES; mysql> exit

Новое значение пароля слудет прописать в файле /usr/share/ocsinventory-reports/ocsreports/dbconfig.inc.php:

$_SESSION["PSWD_BASE"]="ocspasswd"

И в ocsinventory-server.conf:

PerlSetVar OCS_DB_PWD ocspasswd

Локализация

Переходим на страницу http://localhost/ocsreports/, для регистрации используем логин “admin” с паролем “admin”. Щелкнув здесь же по флагу, можно активировать русский язык интерфейса, но сразу после установки это привело к появлению нечитаемых символов. Единственным материалом по локализации интерфейса OCS Inventory является статья Евгения Бражко (http://eugene-online.blogspot.com/2008/04/ocs-inventory.html), но она относится к версии 1.02RC1, вышедшей в марте 2008 года и многие вопросы которые в ней описаны, в текущей версии уже решены. Так анализ HTML кода страницы показал, что она выдается в нужной кодировке:

Интерфейс локализуется при помощи языкового файла russian.txt расположенного в /usr/share/ocsinventory-reports/ocsreports/languages. В меню “Configurations” есть отдельный пункт “Language file” позволяющий его редактировать. Но открыв файл russian.txt в текстовом редакторе поддерживающем СР1251 обнаруживаем только набор нечитаемых символов. Вывод команды file:

$ file russian.txt russian.txt: UTF-8 Unicode English text

Задает еще больше вопросов. При этом:

$ file english.txt english.txt: ASCII English text

А первая строка файла, явно указывает на нужную кодировку.

$ head -n 1 russian.txt 0 windows-1251

Из этого делаем вывод — что-то не то с самим файлом, поэтому берем аналогичный с RC1 или , и подменяем его, не забыв установить нужные права доступа.

$ sudo chown root:www-data russian.txt

После этого все надписи выводятся на русском.
Чтобы корректно выводились названия программ установленных на Windows системах, следует в файле /usr/share/ocsinventory-reports/ocsreports/preferences.php установить в “1” значение «UTF8_DEGREE»:

Define("UTF8_DEGREE", 1); // 0 For non utf8 database, 1 for utf8

Echo "$td3".htmlentities(textDecode($item->PUBLISHER))." $td3".htmlentities(textDecode($item->NAME))." $td3".textDecode($item->VERSION)." $td3".(htmlentities(textDecode($item->COMMENTS))?htmlentities(textDecode($item->COMMENTS)):"N/A")." ";

Меняем на:

Echo "$td3".textDecode($item->PUBLISHER)." $td3".textDecode($item->NAME)." $td3".textDecode($item->VERSION)." $td3".(htmlentities(textDecode($item->COMMENTS))?textDecode($item->COMMENTS):"N/A")." ";

После этого список программ установленных на конкретном компьютере будет выводится корректно. Страница в PDF создаваемая при помощи кнопки «Напечатать эту страницу», которая расположена в самом низу, также выглядела корректно. Хотя в общем списке ПО по прежнему будет не читаемый текст.

Установка агента

Агент для Windows написан на C++, его можно установить вручную, при помощи logon скрипта или правил GPO. Агент для Linux написан на Perl и С. Для его установки потребуется наличие некоторых модулей Perl (XML и Zlib) и dmidecode (обеспечивает сбор данных из BIOS об оборудовании в соответствии со стандартами SMBIOS/DMI). В Linux агент устанавливается вручную. Сначала рассмотрим этот вариант.
Если клиент устанавливается на том же компьютере, что и сервер практически все необходимые пакеты для удовлетворения зависимостей уже будут. Иначе устанавливаем:

$ sudo apt-get install libcompress-zlib-perl libnet-ip-perl libnet-ssleay-perl libwww-perl libxml-simple-perl po-debconf ucf dmidecode pciutils

$ tar xzvf OCSNG_UNIX_AGENT-1.02.tar.gz $ cd Ocsinventory-Agent-1.0.1 $ perl Makefile.PL $ make $ sudo make install

После ввода последней команды поступит запрос на настройку агента.

Do you want to configure the agent Please enter "y" or "n"?> [y]

Отмечаем “y” и при помощи цифровых клавиш отвечаем на вопросы, где должен располагаться конфигурационный файл:

Where do you want to write the configuration file? 0 -> /etc/ocsinventory 1 -> /usr/local/etc/ocsinventory 2 -> /etc/ocsinventory-agent

Далее указываем адрес или имя сервера, создаем тэг (с его помощью можно собрать системы в целевую группу, например, по принципу размещения) для агента, активируем задачу для cron, каталог для хранения файлов и так далее. По окончании выдается запрос на отсылку собранных данных о компьютере на сервер:

Do you want to send an inventory of this machine? Please enter "y" or "n"?> [y] Accountinfo file doesn"t exist. I create an empty one. -> Success!

В итоге в /var/lib/ocsinventory-agent будет создан подкаталог с файлами содержащими текущую конфигурацию компьютера. Например, в ocsinv.adm содержится тег и название системы под которым она будет видна в консоли управления.

$ cat /var/lib/ocsinventory-agent/http\:__localhost_ocsinventory/ocsinv.adm TAG Ubuntu

Практически сразу после установки агента сведения о новой системе появятся в консоли управления во вкладке “Все компьютеры”.
При возникновении проблем можно запустить агента в режиме отладки:

$ ocsinventory-agent -l /tmp –debug --server http://localhost/ocsinventory

По умолчанию во вкладке “Все компьютеры” выводятся 7 характеристик клиентских машин, но при помощи раскрывающегося списка “Add column” можно добавить еще до 23 поля. Хотя в некоторых случаях замечены ошибки в определении параметров. Так на системе с такими характеристиками:

$ dmesg | grep -i processor [ 97.725563] powernow-k8: Found 1 AMD Athlon(tm) 64 X2 Dual Core Processor 3600+ processors (2 cpu cores) (version 2.20.00) [ 0.000000] Detected 2010.408 MHz processor.

В консоли OCS Inventory было выведено – 1000 Мгц, но при необходимости данные можно скоректировать вручную. По разным причинам в базу компьютер может быть занесен несколько раз, для удаления дубликатов существует одноименная вкладка в которой одинаковые системы можно отобрать по нескольким характеристикам (имя, МАС-адрес, серийный номер).
Текущая версия агента для Windows 4.0.5.4, архив OCSNG_WINDOWS_AGENT_1.02.zip с установочными файлами можно скачать с сайта проекта. Судя по всему, в нем уже исправлена ошибка, которая приводила к тому, что русские буквы, начиная с ‘х"(0xF4) заменялись английским иксом. Во всяком случае, на тестовых системах все работало правильно. Как вариант можно использовать специальную сборку (версия агента 4.0.4.9).
Самым простым вариантом установки является запуск исполняемого файла OcsAgentSetup.exe в этом случае будет произведена стандартная установка, по окончании которой агент будет прописан в качестве сервиса. На последнем этапе указываем имя или IP-адрес OCSNG сервера и устанавливаем флажок «Immediatly launch inventory», чтобы сразу же отправить отчет.
Все настройки будут сохранены в файле service.ini, каталога в который установлен агент.
В Vista следует открыть его и добавить параметр /DEBUG в строу запуска:

Miscellaneous= /SERVER:192.168.0.10 /PNUM:80 /DEBUG

При изменении оборудования или ПО, агента вызвать принудительно, набрав в командной строке:

> "C:\Program Files\OCS Inventory Agent\OCSInventory.exe" /SERVER:ocsng_server /PNUM:80 /NOW

Также агента (файл ocsagent.exe являющийся zip архивом) можно импортировать в базу OCSNG, выбрав в вкладке Агент и указав на месторасположения файла. В этом случае он будет доступен с любого компьютера сети.


Кроме функций сетевой инвентаризации OCSNG имеет возможность развертывания пакетов и запуска команд записанных в файле (например bat/vbs) на клиентских компьютерах (крое Vista), информация о которых находится в инвентаризационной системе. При необходимости установки одного приложения на большое количество систем такая функциональность очень выручает.
Для начала пакет нужно создать. Переходим в Deployment - Build и заполняем поля New package building. Название пакета должно быть уникальным и желательно отражать его назначение. Параметр Priority определяет порядок размещения пакетов. Что собственно делать с пакетом определяет поле Action. Здесь три возможных значения:

  • Store - копировать на целевую систему;
  • Execute - копировать и выполнить с командой;
  • Launch - копировать и запустить.

Параметры в User notifications позволяют вывести соответствующее предупреждение пользователю, разрешить ему отмену выполнения задачи. Созданный пакет копируется в каталог /var/lib/ocsinventory-reports/download/timestamp
При этом timestamp получается уникальным.

$ ls /var/lib/ocsinventory-reports/download/ 1241705351 1241722723 $ ls 1241722723 1241722723-1 info

Файл info содержит настройки пакета, а 1241722723-1 является собственно программой.
Переходим в Deployment - Activate выбираем нужный пакет и нажимаем ссылку Activate. Вводим в появившемся окне адрес вида https://server/download/ при этом timestamp к URL будет добавлен автоматически, нажимаем “Отправить”. В ответ должны получить сообщение:

Package activated, it can now be deployed.

Теперь выбираем компьютер, на которых хотим установить пакет, переходим в меню “Customization”, в самом низу выбираем ссылку “add package”, указываем на пакет и нажимаем в поле “Affect”. Подтверждаем свой выбор. В Customization появится информация о состоянии задачи, а в таблице в Activate будет выводиться статистика.
По умолчанию агент подключается к серверу раз в сутки, тогда и будет произведена установка. Можно ускорить этот процесс, вызвав подключение принудительно, как это показано выше. После подключения агента к серверу состояние пакета должно измениться с WAITING_NOTIFICATIONS на NOTIFIED, а затем Success. Пакет будет сохранен в каталоге C:\Program Files\OCS Inventory Agent\download\TIMESTAMP. А все связанные сообщения можно найти в файле download.log.
Кроме выдачи информации о “своем” компьютере агенты в разных подсетях сканируют сеть в поисках MAC адресов принадлежащих других системам. Такая функция называется “IP discovery” и позволяет находить другие устройства, на которых нельзя установить агента (например, свичи, принтеры и так далее).


Установка GLPI

Установка GLPI достаточно проста. В репозитариях дистрибутивов нужный пакет есть, но его версия обычно сильно отстает.

$ sudo apt-cache search glpi glpi - IT and Asset management software $ sudo apt-cache show glpi | grep -i version Version: 0.68.3.2-1

Актуальной на момент написания статьи является версия 0.71.5 вышедшая в январе 2009 года. Кроме этого на странице загрузки доступен предрелиз 0.72-RC2 и срез CVS архива. Для установки просто распаковываем скачанный архив в корневой каталог веб-сервера:

$ sudo tar xzvf glpi-0.71.5.tar.gz -C /var/www $ cd /var/www/glpi

Устанавливаем для некоторых каталогов владельца и группу-владельца.

$ sudo chown www-data:www-data config files files/* inc

Далее набираем в браузере http://localhost/glpi выбираем язык (в списке есть русский), принимаем условия GPL, и следуем указаниям мастера установки. Самый главный этап “Проверка окружения на совместимость с GLPI”, где следует внимательно прочитать и выполнить все рекомендации.
Например, по указанию мастера, параметр memory_limit в php.ini следует установить в значение большее 32.

$ grep -i memory_limit /etc/php5/apache2/php.ini memory_limit = 128M

Выполняем все требования, проверяем повторно и если все нормально нажимаем Continue.


Теперь собственно установка - вводим данные для доступа к MySQL, название базы данных и все.
Чтобы GLPI автоматически проверял почту, отправлял уведомления следует создать задание для пользователя от имени которого работает веб-сервер (нужен пакет php5-cli):

$ sudo crontab -u www-data -e */5 * * * * /usr/bin/php5 /var/www/glpi/front/cron.php &>/dev/null

По умолчанию в GLPI создается четыре учетных записи с разными правами и возможностями (через дробь указан пароль):

  • glpi/glpi – администратор;
  • tech/tech — технический специалист;
  • normal/normal – обычная учетная запись (возможность просмотра данных);
  • post-only/post-only – только обращение в службу поддержки;

GLPI поддерживает импорт учетных данных из AD или другой LDAP.
Регистрируемся в системе как glpi. Для локализации интерфейса в “Setting — Select Language” выбираем русский язык, после этого все новые учетные записи будут использовать по умолчанию выбранный язык. Новые пользователи добавляются в одноименной вкладке, там несколько некорректный перевод. Так логину соответствует поле «Имя пользователя», это иногда сбивает с толку. Чтобы не было путаницы можно изменить значение в файле /var/www/glpi/locales/ru_RU.php:

$LANG["setup"]="Имя пользователя";

Далее переходим в “Установки (Setup) — Общие (General setup)” и устанавливаем “Активировать режим OCSNG (Activate OCSNG mode)” в “Да”. После этого появится новая вкладка “Режим OCSNG” (OCSNG Mode). Если OCSNG и MySQL установлены на локальной машине, то данные для подключения к OCSNG будут найдены автоматически. Иначе необходимо будет заполнить информацию о сервере OCSNG вручную.


По умолчанию синхронизируется только часть параметров, чтобы в базу данных GLPI были перенесены и компоненты компьютеров, следует разрешить их синхронизацию, установив флажок напротив нужного в положение “Глобальный импорт”.
Кроме этого во вкладке “Инструменты” появится пункт “OCSNG” при помощи имеющихся здесь ссылок можно производить синхронизацию и импортирование компьютеров между OCSNG и GLPI.
Полученные данные появляются во вкладке Оборудование. Здесь несколько подпунктов переход в некоторые из них позволяет получить список некоторых компонентов входящих в компьютер (Мониторы, Принтеры), отдельного оборудования (Картриджи, Телефоны), а также ПО. Импортированные компьютеры доступны в одноименном подпункте. Выбрав компьютер или устройство мы получаем доступ к 12 вкладкам, в которых можно просмотреть и скорректировать данные об оборудовании, сопоставить ответственного, просмотреть заявки, добавить заметки, сделать отметку о выдаче во временное использование, просмотреть историю и так далее. К сожалению на данный момент список импортированных с OCSNG компонентов компьютера написанный на русском выводится нечитаемым текстом.
Пользователей GLPI можно объединить в группы, кроме этого существует более глобальное понятие - Организация. Сразу после установки создается «Основная организация» в которую и будут включены все компоненты. Предусмотрено создание других организаций с установлением подчиненности между ними (структуры). Но работа с организациями реализована неудобно, так перенос техники в другую организацию усложнен и неудобен. Предусмотрен экспорт данных в PDF, CVS и SLK (Symbolic Link).
По умолчанию при экспорте в PDF вместо русских букв выводятся знаки вопросов, это происходит по двум причинам: стандартная функция экспортирует данные в кодировке ISO-8859-1, которую и поддерживает используемый по умолчаннию шрифт. Подсказка была найдена на форуме OPENNET . Заменяем в скрипте /var/www/glpi/inc/export.function.php вызов функции utf8_decode на utf8_decode_cyr.

$ sudo perl -p -i -e "s/utf8_decode/utf8_decode_cyr/g" export.function.php inc/export.function.php:

Теперь шрифт. По умолчанию для экспорта используется шрифт Helvetica, его бы я и рекомендовал оставить. Если заменить шрифт другим, его имя придется править не только в двух местах файла export.function.php.

$ cat export.function.php | grep -i selectFont $pdf->selectFont(GLPI_ROOT."/lib/ezpdf/fonts/Helvetica.afm");

Но и в 2 файлах находящихся в lib/ezpdf.

Теперь шрифт. Для конвертирования TTF шрифта в Postscript type 1 потребуется утилита ttf2pt1.

$ sudo apt-get install ttf2pt1

Запускаем.

$ ttf2pt1 -l cyrillic -A Helvetica.ttf Helvetica

Теперь копируем файлы вместо старых, не забыв подправить права.

$ sudo cp -v Helvetica* /var/www/glpi/lib/ezpdf/fonts/ `Helvetica.afm" -> `/var/www/glpi/lib/ezpdf/fonts/Helvetica.afm" `Helvetica.t1a" -> `/var/www/glpi/lib/ezpdf/fonts/Helvetica.t1a" `Helvetica.ttf" -> `/var/www/glpi/lib/ezpdf/fonts/Helvetica.ttf"

.
После этого PDF будет выводится корректно.


Установка плагинов для GLPI производится простой распаковкой в подкаталог glpi/plugins, после чего плагин будет доступен для настройки в меню “Установки – Плагины”. С сайта проекта можно скачать приблизительно 50 самых разнообразных плагинов.

Интерфейсы как OCSNG, так и GLPI достаточно просты для освоения, достаточно потратить полчаса и вы будете хорошо ориентироваться. К сожалению, до конца вопрос локализации так и не решен. Так для Windows в OCSNG неправильно отображаются кириллические наименования установленных программ и компонентов оборудования. Обсуждение всех вопросов по локализации можно найти на форумах проекта OCSNG и OPENNET, некоторым они помогают у некоторых не получается все решить.

OCS Inventory NG расшифровывается как Open Computers and Software Inventory. Это ПО предназначено для инвентаризации компьютеров в сети, сбора информации о программном обеспечении и установленном оборудовании.

Поздравляем участника конкурса

Этот текст был прислан на конкурс авторов, который мы запустили весной. Мы разобрались с большим количеством пришедших материалов, подвели итоги и наградили победителей. Автор этой заметки получил приз - трехмесячную подписку на «Хакер». Поздравляем!

Ключевые особенности:

  • удобный веб-интерфейс;
  • расширение возможностей плагинами;
  • поддержка IpDiscover и SNMP;
  • продвинутый поиск;
  • сбор ключей Windows и Office;
  • удаленное развертывание пакетов.

Этот продукт поддерживает все популярные ОС: Windows, Linux, BSD, Sun Solaris, IBM AIX, HP-UX, macOS, Android.

Устанавливать будем с официального сайта, так как в репозиториях Debian старые версии.

На такой конфигурации железа сервер спокойно может собирать информацию со 150 агентов с интервалом обновления четыре часа.

  • Софт: Debian Jessie (8.7.1) x64, OCSNG_UNIX_SERVER-2.3.1, OCSNG-Windows-Agent-2.3.0.0
  • VPS: OpenVZ, 2 vCPU, 512 Мбайт, 15 Гбайт SSD

Подготовка

Проверим дату и время, чтобы соответствовали нашему часовому поясу. На некоторых виртуальных серверах они бывают неправильно установлены, из-за чего в базе данных отображаются некорректно.

Date ln -sf /usr/share/zoneinfo/Europe/Moscow /etc/localtime

Подключаем репозиторий. Открываем список зеркал и добавляем репозиторий DotDeb.

Nano /etc/apt/sources.list DotDeb deb http://packages.dotdeb.org jessie all deb-src http://packages.dotdeb.org jessie all

Импортируем ключ DotDeb’а:

Wget http://www.dotdeb.org/dotdeb.gpg -O - -q | apt-key add -

Обновляем список зеркал и пакеты:

Apt-get update && apt-get upgrade

Установим необходимые пакеты:

Apt-get install make apache2 php7.0-mbstring php7.0-soap php7.0-common libapache2-mod-php7.0 php-pear php7.0-cli php7.0-ldap php7.0-gd php7.0-zip mariadb-server php7.0-mysqlnd php7.0-curl

Во время установки задаем пароль для пользователя root MySQL.

Ставим модули Perl:

Apt-get install libxml-simple-perl libio-compress-perl libdbi-perl libdbd-mysql-perl libapache-dbi-perl libnet-ip-perl libsoap-lite-perl libarchive-zip-perl cpan -i XML::Entities

После этого устанавливаем MariaDB и создаем пользователя ocs и БД ocsweb.

Логинимся к БД:

Mysql -u root -p

Создаем пользователя:

Mysql> create user "ocs"@"localhost" identified by "pass_mysql";

Создаем БД:

Mysql> create database `ocsweb` character set = "utf8";

Присваиваем права:

Mysql> GRANT ALL PRIVILEGES ON `ocsweb`.* to `ocs`@localhost; mysql> FLUSH PRIVILEGES; mysql> quit;

Установка и настройка

Скачиваем OCS-NG Server:

Wget -P /tmp https://github.com/OCSInventory-NG/OCSInventory-ocsreports/releases/download/2.3.1/OCSNG_UNIX_SERVER-2.3.1.tar.gz tar -xf /tmp/OCSNG_UNIX_SERVER-2.3.1.tar.gz -C /tmp cd /tmp/OCSNG_UNIX_SERVER-2.3.1/

Запускаем скрипт установки (все настройки оставляем по умолчанию):

./setup.sh

  1. Мы уверены и хотим продолжить.
  2. Наш MySQL-сервер запущен на локальном хосте.
  3. И работает он на порте 3306.
  4. Бинарник демона apache2 находится в /usr/sbin/apache2ctl .
  5. Конфигурационный файл лежит тут: /etc/apache2/apache2.conf .
  6. Apache2 работает от пользователя www-data .
  7. Который входит в группу www-data.
  8. Программа установки поместит конфигурационный файл OCS Inventory NG в директорию /etc/apache2/conf-available .
  9. Бинарник PERL расположен тут: /usr/bin/perl .
  10. Да, мы хотим настроить конфигурационный сервер на этом компьютере.
  11. Размещаем логи сервера OCS в /var/log/ocsinventory-server .
  12. Конфигурационные файлы плагинов будут лежать тут: /etc/ocsinventory-server/plugins.
  13. Задаем расположение модулей Perl: /etc/ocsinventory-server/perl .
  14. Модуль PERL Apache2::SOAP не установлен, хотите продолжить? (Это опциональная функция OCS, без нее все будет корректно работать.)
  15. Чтобы Apache 2 загружал модули Perl до старта OCS, программа установки переименует ocsinventory-server.conf в z-ocsinventory-server.conf .
  16. Да, мы хотим настроить Web Administration Console.
  17. Наша версия OCS устанавливается впервые, поэтому продолжаем.
  18. Куда копировать статические файлы PHP Web Console /usr/share/ocsinventory-reports .
  19. Каталоги с возможностью записи/кеширования для пакетов развертывания, а также журналы консоли администрирования, IpDiscover и SNMP будут находиться в /var/lib/ocsinventory-reports .
  20. Готово! Рестарт веб-сервера пока не делаем. Журнал установки лежит в /tmp/OCSNG_UNIX_SERVER-2.3.1/ocs_server_setup.log .

Задаем в z-ocsinventory-server.conf директиву PerlSetVar OCS_DB_PWD , то есть пароль пользователя ocs.

Nano /etc/apache2/conf-available/z-ocsinventory-server.conf PerlSetVar OCS_DB_PWD pass_mysql

Включаем конфиги

A2dissite 000-default a2enconf ocsinventory-reports a2enconf z-ocsinventory-server /etc/init.d/apache2 restart

Предоставляем пользователю www-data права на директории:

Chown -R www-data:www-data /usr/share/ocsinventory-reports/ chmod 0755 /var/lib/ocsinventory-reports/

Теперь подключаемся по адресу http://domen_or_ip/ocsreports . Нас уведомят о том, что следовало бы избавиться от install.php . Удаляем его:

Rm /usr/share/ocsinventory-reports/ocsreports/install.php

Дополнительно можно отключить AccessLog в Apache 2:

Nano /etc/apache2/sites-available/000-default.conf