среда, Апрель 16, 2008

Инвентаризация компьютерной и оргтехники. OCS Inventory.

Итак, продолжаем разговор об инвентаризации компьютерной техники.

OCS Inventory – система инвентаризации компьютеров в сети, установленного на них оборудования и программного обеспечения. Так же позволяет удаленно настраивать программное обеспечение рабочих мест. Работает под всеми операционными системами.

Архитектура системы

Система OCS Inventory NG использует программу агента, которая выполняется на инспектеруемом оборудовании и передает информацию на центральный сервер. Управление программами-агентами выполняется так же с центрального центрального сервера. Централый сервер системы позволяет не только собирать информаци об инвинтаризируемом обоурдовании, но и частично управлять инспектируемыми компьютерами.

Связь между сервером и инспектируемым оборудованием происходит через HTTP/HTTPS протоколы. Вся передаваемая информация сжимается для уменьшения сетевого трафика.

Инсталляция программы-агента может быть произведена несколькими способами:
  • С помощью logon скрипта или правил GPO в Windows сетях.
  • В Linux программу-агента необходимо установить самостоятельно.
Центральный сервер управления содержит 4 главных компонента:
  • Сервер базы данных, для хранения информации о инвинтаризируемом оборудовании.
  • Коммуникационный сервер, осуществяющий связь с сервером базы данных и программами-агентами на инвентаризируемом оборудовании.
  • Сервер развертывания, для создания пекетов установки программ-агентов.
  • Консоль управления, которая позволяет производить просмотр информации об инвентаризируемом оборудовании через Интернет браузер.
Распространяется система по лицензии GPL v2 и является Open Source проектом.
Источник: www.oscc.ru

Скачать систему:
Следующие пакеты отсутствуют в Gutsy, но уже есть в Hardy. Несмотря на это их можно скачать и установить в Ubuntu 7.10.

Предварительно следует установить следующие пакеты:
$ sudo apt-get install libapache-dbi-perl libdbi-perl libdbd-mysql-perl libsoap-lite-perl libxml-simple-perl libnet-ip-perl libcompress-zlib-perl php5-gd
и модуль XML::Entities, которого в репозитории нет
$ sudo cpan -i XML::Entities

$ wget http://archive.ubuntu.com/ubuntu/pool/universe/o/ocsinventory-server/ocsinventory-reports_1.01-3_all.deb
$ wget http://archive.ubuntu.com/ubuntu/pool/universe/o/ocsinventory-server/ocsinventory-server_1.01-3_all.deb
$ sudo dpkg -i ocsinventory-server_1.01-3_all.deb
$ sudo dpkg -i ocsinventory-reports_1.01-3_all.deb
Как видите, в репозитории находится стабильная версия системы годичной давности. Я же буду рассматривать установку и настройку последней на текущий момент версии 1.02 RC1. При этом установка дополнительных пакетов и модуля XML::Entities не отменяется - они нужны.

Скачиваем файл OCSNG_LINUX_SERVER_1.02_RC1.tar.gz и распаковываем его. Проблемы начинаются уже на этапе работы инсталятора. Поэтому, перед тем как запустить setup.sh, открываем его и вносим следующие изменения:

строка 1114
- chown -R root:$APACHE_GROUP $ADM_SERVER_STATIC_DIR/$ADM_SERVER_VAR_IPD_DIR >> $SETUP_LOG 2>&1
+ chown -R root:$APACHE_GROUP $ADM_SERVER_VAR_DIR/$ADM_SERVER_VAR_IPD_DIR >> $SETUP_LOG 2>&1
строка 1123
- chmod -R go-w $ADM_SERVER_STATIC_DIR/$ADM_SERVER_VAR_IPD_DIR >> $SETUP_LOG 2>&1
+ chmod -R go-w $ADM_SERVER_VAR_DIR/$ADM_SERVER_VAR_IPD_DIR >> $SETUP_LOG 2>&1
строка 1132
- chmod g+w $ADM_SERVER_STATIC_DIR/$ADM_SERVER_VAR_IPD_DIR >> $SETUP_LOG 2>&1
+ chmod g+w $ADM_SERVER_VAR_DIR/$ADM_SERVER_VAR_IPD_DIR >> $SETUP_LOG 2>&1

Далее, необходимо для таблиц files и tags принудительно прописать в sql скрипте создания базы (OCSNG_UNIX_SERVER_1.02_RC1/ocsreports/files/ocsbase.sql) кодировку latin1 (строка 143 и 468):
) ENGINE=MYISAM DEFAULT CHARSET=latin1;

Теперь можно запускать setup.sh.
На все вопросы просто жмём клавишу ввода вплоть до окончания установки.

После успешной установки перезапускаем веб-сервер:
$ sudo /etc/init.d/apache2 restart
Теперь запускаем браузер и в адресной строке набираем http://имя_сервера/ocsreports/install.php и вводим данные для создания базы данных:
   MySql login: root
MySql password: пароль root'а для MySQL
MySql HostName: localhost
Создание базы ocsweb с таблицами должно пройти без проблем.
Затем создаём любым удобным способом пользователя ocs и даем ему права на базу ocsweb.

Меняем в файле /usr/share/ocsinventory-server/ocsreports/dbconfig.inc.php пароль для доступа к базе.

В браузере набираем http://имя_сервера/ocsreports и попадаем на страницу авторизации. При необходимости выбираем русский язык (флажки в правом верхнем углу). Пользователь: admin, пароль: admin.

На этом установку можно считать оконченной.

Теперь решаем проблемы с отображением русских символов.

В файле /usr/share/ocsinventory-server/ocsreports/preferences.php в строке 21:
- define("UTF8_DEGREE", 0 );  // 0 For non utf8 database, 1 for utf8
+ define("UTF8_DEGREE", 1 ); // 0 For non utf8 database, 1 for utf8

В файлах /usr/share/ocsinventory-server/ocsreports/group_show.php, header.php и machine.php меняем charset=ISO-8859-1 на charset=windows-1251 (строки 116, 49 и 90 соответственно).

При просмотре через www неправильно отображаются русские названия программ. Открываем для редактирования
/usr/share/ocsinventory-server/ocsreports/machine.php и правим function print_softwares($systemid) начиная со строки 606:

до
echo "$td3".htmlentities(textDecode($item->PUBLISHER))."</td>
$td3".htmlentities(textDecode($item->NAME))." </td>
$td3".textDecode($item->VERSION)." </td>
$td3".(htmlentities(textDecode($item->COMMENTS))?htmlentities(textDecode($item->COMMENTS)):"N/A")." </td>";
после
echo "$td3".textDecode($item->PUBLISHER)."</td>
$td3".textDecode($item->NAME)." </td>
$td3".textDecode($item->VERSION)." </td>
$td3".(htmlentities(textDecode($item->COMMENTS))?textDecode($item->COMMENTS):"N/A")." </td>";

Для отображения на главной странице имен пользователей на русском языке в файле preferences.php следует внести изменения в строку 763:
- echo $item[$chmp]."</span></a></font></td>\n";
+ echo textDecode($item[$chmp])."</span></a></font></td>\n";

С серверной частью вроде бы всё. Переходим к клиентской.

Установка агента в Ubuntu:
$ sudo apt-get install ocsinventory-agent
Запуск:
$ sudo ocsinv
В системе (в агенте сбора информации для Windows) имеется проблема с кодировкой (малые русские буквы, начиная с 'х'(0xF4 или 244). Т. е. буквы 'хцчшщъыьэюя' преобразовываются в символ английского языка 'x' (0x78 или 120). Проблема решается заменой файлов после установки агента файлами из архива http://ocsinventory.narod.ru/agentWinOcs.rar (спасибо Ивану Перевалову за сборку!).


Для тех, кого вышеприведенные операции c кодом приводят в ужас или навевают тоску (что вероятнее :-), выкладываю тарбол со всеми описанными исправлениями. Вам остаётся только распаковать его и установить – OCSNG_UNIX_SERVER_1.02_RC1_RU.tar.gz.


При подготовке материала использовались некоторые решения с форума http://www.opennet.ru/openforum/vsluhforumID3/14092.html. Большое спасибо их авторам!

В следующий раз рассмотрим процесс интеграции GLPI и OCS Inventory.

13 коммент.:

Анонимный комментирует...

Огромное спасибо. Очень познавательная статья. Да еще и с всевозможными исправлениями.
Скажите, а есть ли какой-нибудь легкий способ применить "патч" Ивана Перевалова, без того, чтобы останавливать службы на каждой машине, а потом снова запускать(иначе блокировка файлов стоит и их не заменить)?

Анонимный комментирует...

Что даст интеграция GLPI и OCS Inventory?

Кстати, очень жаль, что в собираемой OCS статистике нет информации о материнской плате, только об остальных устройствах.

Eugene комментирует...

Скажите, а есть ли какой-нибудь легкий способ применить "патч" Ивана Перевалова...
Хорошо было бы перепаковать инсталятор, но я не знаю как. Можно, например, сделать bat-файл следующего содержания:
net stop "OCS INVENTORY SERVICE" && ^
copy /Y OCSInventory.exe "C:\Program Files\OCS Inventory Agent" & ^
copy /Y OcsWmi.dll "C:\Program Files\OCS Inventory Agent" & ^
copy /Y SysInfo.dll "C:\Program Files\OCS Inventory Agent" & ^
net start "OCS INVENTORY SERVICE"


Что даст интеграция GLPI и OCS Inventory?
инвентарные карточки + ведение учета расходных материалов и организации службы технической поддержки по расписанию и по заявкам пользователей + различные выборки и отчеты

Анонимный комментирует...

В окне All Software русские буквы отображаются так:

Àðõèâà òîð WinRAR

Как это можно исправить???

Еще вопрос. Можно ли увидеть в OCS Inventory историю изменения конфигурации компьютера???

Anton комментирует...

Помотес проблемой, подскажите хотя бы что компать. GLPI импортирует компьютеры из OCS, но одни названия, более никаких данных. Ни какое железо, ни что за софт установлен. В чем может быть проблема?

OCS Inventory 1.02 rc2
GLPI 0.70.2

Eugene комментирует...

До связки GLPI + OCS пока еще руки не дошли, так что сказать на данный момент ничего не могу.

Anton комментирует...

С той проблемой разобрался, очень важно выключить опцию использования словаря в GLPI, если он не используеться в Ocs. Но вот всетаки хотелось бы этот словарь задействовать. Не могу понять как создать категорию. А отмеченые галочками програмы не перемещаються даже в существующие по умолчанию. Может что-то гдето надо включить?

Спасибо!

alekciy комментирует...

Интересно, хоть кто-то делал связку GLPI + OCS? Интерисует главным образом вопрос интеграции этих двух систем. Что бы автоматом данные собранные OCS можно было просматривать в GLPI без дополнительных манимуляций.

elnone комментирует...

Решил проблему с русским в All Software...
добавил в файл /usr/share/ocsinventory-reports/ocsreports/require/function_table_html.php
на строке 153
textDecode($v)

Анонимный комментирует...

Кто-нибудь пробовал патчи из http://forums.ocsinventory-ng.org/viewtopic.php?id=4104

Wizard_1024 комментирует...

Патчи попробовал... Работает по крайней мере с Win 2000 & 2003 Server + Xp

Анонимный комментирует...

связка utf8 mysql + ocsinventory работает?
немогу никак добиться отображения русских букв именно в базе например через phpmyadmin.
еще скачал агента под виндовс с родного сайта и при установке антивирус drweb (лицензия с последними обновлениями) выругался на трояна на файле setacl.exe.
что то очень подозрительно удобно получается на каждый клиент по троянчику :)
первый вопрос остается открытым.

agronom комментирует...

Очень полезная статья. Использовал некоторые доработки описанные здесь.
Скопипастил кусочек вашей статьи к себе.
Надеюсь Вы не против?

Отправить комментарий

Creative Commons LicenseExcept where otherwise noted, content on this site is
licensed under a Creative Commons Attribution-Noncommercial 3.0 License