четверг, 25 апреля 2013 г.

Интеграция GLPI v0.80.7 с OCS Inventory v2

Добрый день.

Появилась необходимость интегрировать с OCS inventory такую систему как GLPI (Gestionnarie libre de parc informatique - Свободный менеджер ИТ-инфраструктуры) - система работы с заявками и инцидентами, а также для инвентаризации компьютерного оборудования.


1. Часть 1 (сервер)
2. Часть 2 (кириллица)
3. Часть 3 (агенты)
4. Часть 4 (GLPI)


1. Установка GLPI.


GLPI версии 0.80.7 есть в репозиториях Ubuntu 12.04, чем мы и воспользуемся:
# sudo apt-get install glpi

Во время установки нам будут заданы вопросы, на которые необходимо ответить так:
1. Yes
2. Введем пароль к root пользователю mysql
3. Введем пароль для пользователя базы данных glpi 
4. Подтвердим пароль пользователя glpi
Базовая настройка завершена, теперь перейдем непосредственно к настройке GLPI.

2. Настройка GLPI.

Перейдем по адресу http://your_server/glpi .
Где нас попросят ввести логин и пароль:

Доступы по умолчанию:
glpi/glpi - администратор
tech/tech - технический специалист
normal/normal - обычный пользователь
post-only/post-only - только обращение в службу поддержки

Система GLPI изначально разрабатывалась с возможностью интеграции с OCS Inventory. Для этого необходимо открыть вкладку Setup -> General -> Inventory.
Необходимо активировать интеграцию, установите значение Enable OCSNG mode в значение Yes.

Теперь надо прописать путь к базе OCSNG и доступы к базе.
Для этого перейдем в вкладку Setup -> OCSNG Mode, где вы увидите список доступных OCSNG серверов, в нашем случае он находится на localhost'e.
Нажмите на localhost зеленого цвета.
На открывшейся странице пропишем настройки подключения к базе OCSNG.
Name: вводим любое понравившееся вам название.
Host for the OCSNG databases: адрес БД OCSNG
Name for the OCSNG database: имя БД OCSNG
OCSNG database user: имя mysql пользователя OCSNG
OCSNG user password: пароль mysql пользователя OCSNG
OCSNG database in UTF8: устанавливаем Yes, если ваша база OCSNG хранит значения в UTF8.
Active: активируем интеграцию.

И нажмем кнопку Update.
После чего должно появиться такое сообщение:

Настройка интеграции закончена, теперь нам необходимо импортировать информацию из OCSNG в GLPI.

3. Экспорт из OCSNG в GLPI.

Переходим на вкладку Tools -> OCSNG  и выбираем пункт меню Import new computers.
В появившемся списке выбираем компьютеры, которые мы хотим импортировать:
И жмем кнопку Import.

Если же информация в OCSNG о существующих компьютерах изменилась, на этапе выбора пункта в Tools -> OCSNG выбираем: Synhronize computers already imported.

Тут все интуитивно понятно. Полазайте по настройкам и найдете много интересного. Так же очень хорошо переведен интерфейс на русский.

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

4. Решаем проблемы с кодировками при импорте данных в форматы PDF и CSV.

Для начала нам необходимо обзавестись шрифтами, которые поддерживают кириллицу:
# wget http://www.tux.in.ua/wp-content/uploads/2009/08/font.rar

Теперь разархивируем данный архив:
# sudo apt-get install unrar
# unrar e font.rar
Ключ e - означает разархивировать :)

Теперь нам нужно перекодировать шрифты для поддержки кириллицы:
# ttf2pt1 -l cyrillic -A Helvetica.ttf Helvetica

Удалим и скопируем новые шрифты в GLPI:
# sudo rm /usr/share/glpi/lib/ezpdf/fonts/*
# sudo cp *Helvetica* /usr/share/glpi/lib/ezpdf/fonts/

Ну и удалим эти шрифты и архив с шрифтами из рабочей директории:
# rm *Helvetica* font.rar

Но и это еще не все, теперь нам надо немного подправить исходники GLPI:
# sudo nano /usr/share/glpi/inc/search.class.php

Для решения проблем с PDF:
Заменяем все вхождения фразы window-1252 на windows-1251.
Всего таких вхождений 6.

Для решения проблемы в CSV:
Заменяем:
$out = "\"".csv_clean($value)."\"".$_SESSION["glpicsv_delimiter"];
на
$out = "\"".decodeFromUtf8(csv_clean($value),'windows-1251')."\"".$_SESSION["glpicsv_delimiter"];

Всего таких вхождений 2, в функциях: showItem и showHeaderItem.

Извечная проблема кодироков (Когда уже все перейдут на UTF-8 не понятно).

вторник, 23 апреля 2013 г.

Инвентаризация оборудования в офисе OCS Inventory NG (Часть 3)

Последняя статья в моем цикле о OCS Inventory NG посвящена установке агентов на linux и windows машины.

1. Часть 1 (сервер)
2. Часть 2 (кириллица)
3. Часть 3 (агенты)
4. Часть 4 (GLPI)

1. Установка и запуск OCS Inventory Windows Agent в автоматическом режиме.

Скачиваем инсталятор OCS Inventory Agent: тыц

Скачиваем bat файл для автоматической установки: тыц 

Эти два файла должны находится в одной директории.
Дважды кликаем на batch.bat и данные о вашем компьютере отправляются на сервер:
Если выскочило сообщение "Insert into this folder OcsAgentSetup.exe", тогда необходимо файл установки OcsAgentSetup.exe поместить в ту же папку, где находится bat-файл.

Листинг bat-файла:
@echo off
IF EXIST OcsAgentSetup.exe. (
        start "" "OcsAgentSetup.exe" /S /SERVER:192.168.1.1 /DEBUG /NOSPLASH /NOW.
    ) else (
        echo Insert into this folder OcsAgentSetup.exe.
        PAUSE
    )

Немного пояснений:
@echo off -отключает вывод приглашения командной строки;
IF EXIST - если в той же директории, откуда запускается bat-файл есть файл OcsAgentSetup запустить его командой start передав параметры:
/S - тихий режим, пользователь не видит, как устанавливается программа;
/SERVER:192.168.1.1 - IP OCS сервера, куда отправить данные;
/DEBUG - создает лог файл, на всякий случай;
/NOW - сразу после установки запустить;
/NOSPLASH - что бы монитор не мигнул во время установки.
Если же данного файла нет, то вывести сообщение и ожидать нажатия любой клавиши пользователем.

2. Установка и запуск OCS Inventory Linux Agent в автоматическом режиме


Скачиваем скрипт: тыц
По умолчанию он скачивается в каталог Downloads вашего пользователя, теперь выполним его:
# sudo bash ~/Downloads/Ocs-agent-linux.sh

Вы увидите сообщение: "Thank you very much" и данные отправятся на сервер.

Листинг скрипта:
#!/bin/bash
### Install debconf-utils ###
apt-get -yq install debconf-utils > /dev/null 2>&1
### Load answers to debconf-set-selections ###
echo "ocsinventory-agent    ocsinventory-agent/tag string" | debconf-set-selections
echo "ocsinventory-agent    ocsinventory-agent/method select http" | debconf-set-selections
echo "ocsinventory-agent    ocsinventory-agent/server string 192.168.1.1" | debconf-set-selections
### Install ocsinventory-agent ###
apt-get -yq install ocsinventory-agent > /dev/null 2>&1
### Run Agent daemon to send data to server ###
/etc/cron.daily/ocsinventory-agent
### thx ###
echo "Thank you very much"

Немного пояснений:
apt-get -yq install - устанавливаем пакет в тихом (q) режиме и отвечаем утвердительно на все вопросы (y).
debconf-utils - в данном пакете находятся прекрасная утилита debconf-set-selections, с помощью которой мы задаем ответы на вопросы во время установки, попозже напишу отдельную заметку, по данной утилите.
> /dev/null 2>&1 - перенаправляем весь (stdout, stderr) на блочное устройство /dev/null т.е. просто ничего не выводим, что бы не мозолить лишний раз глава пользователю.

Я прекрасно понимаю, что скрипт плохой, без проверок каких-либо, но он работает и решает поставленную передо мной задачу.



Инвентаризация оборудования в офисе OCS Inventory NG (Часть 2)


Продолжу свой небольшой цикл статей.

В этой статье я напишу то, как я поборол проблемы с кодировками данных передаваемых с Windows Agent'ов.

1. Часть 1 (сервер)
2. Часть 2 (кириллица)
3. Часть 3 (агенты)
4. Часть 4 (GLPI)


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

Проблема была в том, что сервер не отображал корректно кириллицу.


Инвентаризация оборудования в офисе OCS Inventory NG (Часть 1)



Добрый день.

Появилась необходимость произвести инвентаризацию оборудования в офисе, начальник показал такую штуку, как OCS Inventory NG и дал задание с этим разобраться.

1. Часть 1 (сервер)
2. Часть 2 (кириллица)
3. Часть 3 (агенты)
4. Часть 4 (GLPI)


И теперь я хочу оставить заметку, как же я это делал.
В статье я использую IP 192.168.1.1 как сервер, на котором установлен OCS Inventory.

суббота, 6 апреля 2013 г.

mod_fcgid: read data timeout in 40 seconds

Добрый день.

Собственно, давненько была такая проблема на одном из сайтов. Скрипт слишком долго выполняется и умирает по таймауту.
Что я только не пробывал, правил max_execution_time в локальных, в глобальных php.ini, но все равно эффекта не было. Все осуществляется на системе debian.

А потом я понял, что саму ошибку я и не гуглил. Загуглив быстро нашел ответ спасибо авторам.

Ошибка:


[Sat Apr 06 11:56:51 2013] [warn] [client 178.63.101.79] mod_fcgid: read data timeout in 110 seconds
[Sat Apr 06 11:56:51 2013] [error] [client 178.63.101.79] Premature end of script headers: index.php


Решение:
# nano /etc/apache/mods-available/fcgid.conf

Между тегами <IfModule mod_fcgid> и </IfModule> добавляем:
IPCCommTimeout 290 # Мне надо было задать такое время, 290 секунд.

IPCCommTimeout - устанавливает время доступа к скрипту от IP адреса, после которого работа процесса будет прервана. Стандартное значение - 40 секунд.

Сохраняем и выходим из редактора.

Теперь перегрузим конфиг апача:
# /etc/init.d/apache2 reload

И радуемся жизни дальше.