четверг, 27 августа 2009 г.

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

Для правильного отображения русских символов в интерфейсе OCS Inventory я воспользовался рекомендациями статьи в блоге Евгения Бражко.
Инсталлятор я не правил, поскольку система уже была установлена и работала, правда русские символы в описании оборудования отображались не корректно.

В файле /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";

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

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

На этом доработка OCSNG заканчивается. На очереди настройка интеграции GLPI и OCSNG, а также решение проблем с кодировкой при переносе данных в GLPI.

среда, 26 августа 2009 г.

Инвентаризация компьютерной техники. OCS inventory - установка.

Это частичный перевод официальной статьи по установке OCS и подвязки её к GLPI, а также смежной статьи по добавлению необходимых репозиториев. Оригиналы этой статьи находятся здесь: English : OCS and GLPI installation guide и тут: English : Repository Configuration

Этот гайд писался для дистрибутивов Fedora, RHEL and CentOS, которые содержат OCS и GLPI в оффициальных репозиториях.
Предполагаем что сервер чистый и на нем не установлен MySQL.
Apache должен быть установлен и работать.
В моем случе GLPI и MySQL уже был установлены и эксплуатировались несколько месяцев.
Версии: OCS 1.02.1 и GLPI 0.71.2.

Сервер БД
Установка MySQL, запуск и активация:
# yum install mysql-server
# service mysqld start
# chkconfig mysqld on

Настройка безопасности: нужно изменить пароль администратора БД:
# mysql --user root
mysql> UPDATE mysql.user SET Password = PASSWORD('rootпароль') WHERE User = 'root';
mysql> FLUSH PRIVILEGES;
mysql> exit


Репозитории
Добавление новых: для разных дистрибутивов потребуются разные репозитории:
Fedora : RPM Fusion
Fedora Core : Extras and Livna
RHEL or CentOS : EPEL

Для CentOS 5.3 и Enterprise Linux 5:
rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-3.noarch.rpm

OCS Inventory NG
Установка:
# yum install ocsinventory
# service httpd restart
# chkconfig httpd on


Конфигурация и создание базы данных:
Идем по адресу http://localhost/ocsreports/install.php, если входим с другого компьютера, меняем localhost на ip-адрес сервера.
  1. Вводим логин и пароль администратора БД MySQL, затем Send.
  2. Система создаст схему базы. Нажимаем Send.
  3. Последний шаг установки. Будет создан пользователь по умолчанию - admin/admin. Снова Send.
  4. Выбираем язык (флажок наверху справа).
  5. Входим в систему (admin/admin).
Тут оригинальный документ поздравляет с установкой, но на самом деле еще предстоит помучиться с кодировкой, для правильного отображения русских символов.

Проводим небольшую базовую настройку системы: открываем страницу конфигурации: иконка гаечного ключа -> "Конфигурация" -> вкладка "server"
  • LOGLEVEL = On (нужно если будут проблемы)
  • PROLOG_FREQ = 24 (время между проведением инвентаризаций)
  • AUTO_DUPLICATE_LVL = критерии для определения, что 2 компьютера являются на самом деле одним и тем-же (Я использую сочетание Serial + Mac Address, автор предлагает использовать Model + Serial + Mac Address).
  • TRACE_DELETED = On (нужно для работы с GLPI).
  • SESSION_VALIDITY_TIME = 600 (время сессии, по умолчанию установленно пустое значение, но это не верно).
Помимо прочего нужно сменить пароль администратора системы, в этом пможет иконка с изображением ключа сверху справа экрана.
Также желательно сменить пароль доступа к новой базе данных. Эта база по умолчанию имеет название ocsweb и пароль ocs.

Меняем пароль на базу данных:
# mysql -uroot -prootпароль
mysql> UPDATE mysql.user SET Password = PASSWORD('ocsпароль') WHERE User = 'ocs';
mysql> FLUSH PRIVILEGES;
mysql> exit


Заменяем пароль в конфигурационном файле /etc/httpd/conf.d/ocsinventory-server.conf:
PerlSetVar OCS_DB_PWD ocsпароль

В файле: /etc/ocsinventory/ocsinventory-reports/dbconfig.inc.php:
$_SESSION["PSWD_BASE"]="ocsпароль"

Перезагружаем apache:
# service httpd reload

Первый компьютер
Для проверки установим агента на наш сервер:
# yum install ocsinventory-agent

Отправляем данные инвентаризации:
# ocsinventory-agent --server=localhost

Если все установлено правильно, сервер отобразится в списке OCS.

Автоматическую инвентаризацию компьютера можно настроить в файле: /etc/sysconfig/ocsinventory-agent:
OCSMODE[0]=cron
OCSSERVER[0]=http://localhost/ocsinventory


На этом первый этап по установке закончен. На очереди кириллизация и связка двух систем.

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

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

Обработка файлов. Замена строк.

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


#!/bin/bash
# формируем путь к файлу конфигурации
cfgfile=$HOME/.ICAClient/appsrv.ini
msg="Обрабатываю $cfgfile"
# пишем коммент в консоль и лог
echo $msg
date >> ./log
echo $cfgfile >> ./log
# проверяем наличие резервной копии.
# если есть, выходим с сообщением ничего не меняя
# если нет, делаем резервную копию, пишем в лог
# меняем файл, снова в лог
if [ -f "$cfgfile.bak" ]
then
msg="Резервная копия уже создана. Вероятно это повторный запуск. Завершаем процедуру."
echo "$msg"
date >> ./log
echo $msg >> ./log
else
cat $cfgfile > $cfgfile.bak
date >> ./log
echo "----old----" >> ./log
cat $cfgfile >> ./log
echo "--end old--" >> ./log
sed -i -e 's/111.222.333.444/citrix.siriust.ru/ig' $cfgfile
date >> ./log
echo "----new----" >> ./log
cat $cfgfile >> ./log
echo "--end nes--" >> ./log
fi
echo "Готово! Не забудьте отправить файл log системным администраторам."
exit 0


Код далеко не идеальный, но задачу свою выполняет :-), Создает резервную копию файла конфигурации appsrv.ini и меняет адрес сервера с 111.222.333.444 на citrix.siriust.ru и пишет все операции в лог, куда еще и складывает оригинал и выходной файл. Этот лог отправляется админам по почте, что-бы у нас были копии конфигурационного файла.

пятница, 14 августа 2009 г.

Acer Aspire 3650, не работает USB

На днях попался в руки ноутбук Acer 3650 с не работающими USB портами. Причем встроенная клавиатура и тачпад, как это не странно работали. Оказалось что они был подключены по стандарной шине ps/2, а не USB, как это часто бывает. При подключении устройств к любому порту USB ноутбук зависал, если же устройство отключить то в ряде случаев работа восстанавливалась. Некоторые мыши и клавиатуры определялись как "Неизвестное оборудование".
Оказался виной всему южный мост ATI IXP460. У него выгорает USB, после чего USB устройства либо перестают определяться вообще, либо происходит что-то похожее с этим ноутбуком.
Эта проблема довольно часто встречается с IXP460, не только на ноутбуках Acer серии 3650, но и 5100, а также и у других производителей применяющих этот чип, например fujitsu-siemens amilo a1650.
Если разобрать ноутбук, то на южном мосту IXP460 можно обнаружить вот такое потемнение:
В некоторых случаях оно более заметно, в некоторых слегка просматривается, как здесь.

В лучшем случае, если ноутбук "лёгкий", т.е не содержит встроенных USB девайсов, таких как камера, блютуз, wi-fi, то такая проблема грозит только потерей возможности подключения внешних устройств. Если что-то из USB оборудования в ноутбуке есть, то он может и не загрузится вовсе. В случае с линукс загрузка может продолжаться довольно долго, но компьютер в конечном итоге загрузится.
Для временного восстановления загрузки нужно отключить все встроенные USB устройства (разобрав ноутбук и отключив соответствующие разъемы), если конечно тачпад или встроенная клавиатура не подключены по USB шине.
Ну а для полного ремонта ноутбука потребуется либо замена материнской платы, либо перепайка чипа в сервисном центре.

среда, 12 августа 2009 г.

Консольный редактор vi

Редактор vi - основной консольный редактор в unix-подобных системах.
Запускается из консоли командой vi, если указать имя файла, то редактор сразу откроет его: # vi имя_файла

Основные команды редактора vi
h - Перемещает курсор на один символ влево
j - Перемещает курсор вниз на одну строку
k - Перемещает курсор вверх на одну строку
l - Перемещает курсор на один символ вправо


H - Переместить курсор к первой строке экрана
M - Переместить курсор к средней строке экрана
L - Переместить курсор к последней строке экрана


( - Переместить курсор в начало текущего предложения
) - Переместить курсор в начало следующего предложения


{ - Переместить курсор в начало текущего параграфа, который ограничивается пустой строкой
} - Переместить курсор в начало следующего параграфа


1G - Перейти к первой строке в файле
G - Перейти к последней строке в файле
^g - Выдать номер строки и состояние файла
:n - Перейти к n-ой строке


fx - Поиск указанного символа x справа от текущей позиции курсора
Fx - Поиск указанного символа x слева от текущей позиции курсора
tx - Перемещение курсора вправо на символ до указанного символа x
Tx - Перемещение курсора влево на символ до указанного символа x


a - Создать текст после курсора
A - Создать текст в конце текущей строки
i - Создать текст перед курсором
I - Создать текст перед первым ненулевым символом в текущей строке
o - Создать текст с начала новой строки, расположенной под текущей строкой
O - Создать текст с начала новой строки, расположенной над текущей строкой


ESCAPE - Перейти из режима ввода в командный режим


BACKSPACE - Удалить текущий символ
1w - Удалить текущее слово
@ - Удалить текущую строку нового текста или удалить весь новый текст в текущей строке
u - Отменить последнюю команду
U - Восстановить текущую строку в прежнем состоянии
x - Удалить текущий символ
dd - Удалить текущую строку


r - Заменить текущий символ
s - Удалить символ, под которым расположен курсор и добавить текст.
S - Заменить все символы в строке


yw - Создать копию слова
yy - Создать копию строки
nyy - Копировать n строк
y) - Создать копию всего текста до конца предложения
y} - Создать копию всего текста до конца параграфа


p - Поместить содержимое временного буфера в текст после курсора
:r filename - Вставить содержимое filename после текущей строки


. - Повторить последнюю команду
j - Соединить текущую строку со строкой, расположенной ниже
^l - Очистить и восстановить текущее окно
~ - Заменить нижний регистр на верхний


:w - Записать в файл
:q - Завершить работу с редактором
:q! - Завершить работу с vi без записи в файл
:wq - Записать в файл и завершить работу с редактором vi
:w filename - Записать в новый файл filename
:w! filename - Перезаписать в уже существующий файл filename
:x,yw filename - Записать строки от номера x до номера y в новый файл filename
:sh - Временный возврат к shell для выполнения команд shell
^d - Возврат из временного shell в текущее окно vi для продолжения редактирования

понедельник, 10 августа 2009 г.

Как в yum добавить репозиторий с установочного DVD

После установки Fedora 7, утилита установки/удаления программ за пакетами, даже которые есть на установочном диске, "идет" в интернет.

Что-бы отучить её от дурной привычки нужно сделать следующее.

1.Создать и положить в укромное место iso образ DVD диска, если нет желания, каждый раз ставить установочный диск в привод.
Для примера пусть это будет /var/iso/fedora7dvd.iso

2.Создать папку, в которую будем монтировать содержимое образа
$ sudo mkdir /mnt/fedora7dvd

3.В файле /etc/fstab прописать строку, для монтирования образа при загрузке ПК
/var/iso/fedora7dvd.iso /mnt/fedora7dvd iso9660 ro,loop 0 0

Файлы в каталоге появятся после перезагрузки ПК либо после выполнения команды $ sudo mount -a

4.В файле /etc/yum.repos.d/fedora.repo добавляем следующую секцию:
[fedoraDVD]
name=Fedora $releasever - $basearch
baseurl=file:///mnt/fedora7dvd/
enabled=1
gpgcheck=0

Лишние репозитории можно отключить, выставив параметр enabled в значение "0", в соответствующих секциях.

На этом настройка завершена, можно запускать утилиту установки/удаления ПО, либо устанавливать пакеты из консоли с использованием yum.

четверг, 6 августа 2009 г.

Mustek BearPaw 2400 CU Plus в Linux

Для работы сканера необходимо установить пакеты:
sane - предоставляет возможность работы со сканерами
sane-backends - база данных, набор "драйверов" для сканеров
xsane - графическая оболочка под иксы.
Для работы этого сканера нужна версия бакенда 1.0-73 или более поздняя.

Итак, приступаем к установке.
в Linux Mandriva:
# sudo urpmi sane sane-backends xsane

в CentOS и Redhat:
# sudo yum install sane sane-backends xsane

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

Для файла прошифки создаем папку:
# sudo mkdir /usr/share/sane/gt68xx

Скачиваем файл прошивки: PS2Dfw.usb.
Если сканируется только половина листа, скачиваем файл PS2Dfw2.usb переименовываем его в PS2Dfw.usb и заменяем предидущий.

Копируем прошивку в папку gt68xx
# sudo cp PS2Dfw.usb /usr/share/sane/gt68xx/

Разрешаем не привелигированным всем пользователям чтение файла с прошивкой сканера:
# sudo chmod a+r /usr/share/sane/gt68xx/PS2Dfw.usb

Запускаем xsane.

среда, 5 августа 2009 г.

Общий принтер в локальной сети под Линукс.

Система печати CUPS, наиболее часто применяемая в Линукс, очень удобна и надежна, в том числе и при сетевой печати. Кроме этого, у неё есть еще одно неоспоримое преимущество - при сетевой печати в среде Линукс, драйверы требуются только на машине непосредственно к которой подключен принтер, все остальные компьютеры используют эти драйверы и установка их более нигде не требуется.

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


Имеем локальную сеть 192.168.0.0/24 и компьютер с принтером имеющий адрес 192.168.0.21.

Устанавливаем принтер на этом компьютере через вэб-интерфейс CUPS: http://localhost:631 или http://192.168.0.21:631

Получаем прва рута в системе.
Далее рдактируем файл /etc/cups/cupsd.conf
После строки:
Listen localhost:631
Добавляем запись:
Listen 192.168.111.150:631
Это указывает CUPS прослушивать локальную сеть, а не только localhost.

Далее расставляем права доступа:
<location>
Order deny,allow
# Запрещаем доступ всем
Deny from All
# Разрешаем доступ самому себе
Allow from 127.0.0.1
# Разрешаем доступ локальной сети
Allow from 192.168.0.0/255.255.255.0
# Разрешаем доступ с внешнего адреса
# Раскомментировать ниже, если нужна печать из интернет
# Allow from 1.2.3.4
</location>

и
<limit all>
#Расставляем разрешения аналогично
Order deny,allow
Deny from All
Allow from 127.0.0.1
Allow from 192.168.0.0/255.255.255.0
# Allow from 1.2.3.4
</limit>

Перезагружаем CUPS:
# service cups restart

Всё, на этом настройка компьютера с подключенным принтером завершена.
Приступаем к настройке компьютеров-клиентов.

Нужно изменить файл /etc/cups/printers.conf
Для этого вносим новую секцию в этот файл:
<printer net-printer>
# Информация о принтере, читабельная для пользователя
Info
# Данные о размещении принтера
Location
# IPP-адрес принтера
# Для получения полной строки достаточно в браузере пройти по адресу
# http://адрес.хоста.с.принтером:631/printers и кликнуь по названию
принтера
# в адресной строке браузера скопировать адрес и заменить http на ipp
DeviceURI ipp://192.168.0.21/printers/Printer
State Idle
StateTime 112323115
Accepting Yes
Shared Yes
JobSheets none none
QuotaPeriod 0
PageLimit 0
KLimit 0
OpPolicy default
ErrorPolicy stop-printer
</printer>

Перезапускаем CUPS. После этого в панели управления CUPS должен появиться новый принтер.
На этом настройку сетевой печати можно считать законченной.

пятница, 24 июля 2009 г.

Печать в PDF

Для печати в файл PDF, на компьютерах под управлением Линукс, можно использовать специальную компоненту для CUPS, под названием CUPS-PDF. 

Для установки и настройки виртуального принтера необходимо проделать следующее:

Установить из репозитория пакет cups-pdf:
$sudo urpmi cups-pdf

Изменить в /etc/cups/cupsd.conf запись:
RunAsUser Yes
на
RunAsUser No
В моём случае, на Mandiva 2009.1, записи RunAsUser в файле конфигурации вообще не было и добавление её никак не повлияло на работу CUPS. Думаю эту операцию стоит провести в случае возникновения проблем.

Перезагрузить подсистему печати:
sudo service cups restart

Добавть новый принтер, я обычно это делаю через родную панель управления CUPS доступную по адресу https://localhost:631
Administration->Add Printer, указать название принтера, его расположение и описание, например: "PDF Printer", “Local Printer”, “Печать в PDF”. На следующем этапе выбрать из списка устройство: "CUPS-PDF (Virtual PDF Printer). Далее указать производителя "Generic" и затем драйвер "Generic CUPS-PDF Printer".

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

Для изменения пути сохранения файлов PDF следует в файле /etc/cups/cups-pdf.conf изменить ключ Out.
Для указания пути применяются следующие переменные:

  • ${HOME} - домашняя папка пользователя
  • ${USER} - имя пользователя
  • ${DESKTOP} - путь к рабочему столу пользователя

Например, можно указать путь к сохранению фалов таким образом:
Out /var/spool/cups-pdf/${USER}
или
Out ${HOME}/cups-pdf