суббота, 20 февраля 2010 г.

Начинаем изучать Oracle 11g

Давненько уже приходиться периодически иметь дело с Oracle. В основном это 9i и в основном это касается написания самых разных запросов и скриптов, периодически создания пакетов. Но порой приходить по мере сил заниматься администрированием. Каюсь что специализированные книги были прочитаны лишь отчасти и зачистую лишь по возникающим в конкретный момент времени задачам.
Но Oracle это такая вещь, которая не поощряет легкомыслия и требует глубокого понимания предмета, а обучающие курсы Oracle для меня слишком дороги + за меня их оплачивать никто не будет. Много раз порывался начать изучать самостоятельно и ответственно, но постоянно дело вскоре застревало.
Как результат, могу поставить его на линукс, но испытываю проблемы с запуском после перезагрузки. Наладил guard recovery и несколько полезных скриптов для управления бэкапами, но не могу нормально разобраться с быстродействием базы...
Поэтому сейчас сного приступаю к изучению, надеюсь подойти к этому делу ответственно и добиться более существенных результатов чем в предыдушие разы, соответственно постараюсь описать в последующих статьях полученный в процессе опыт и знания, особенно останавливаясь на возникших у меня трудностях.

Сейчас качается Oracle Enterprise Linux 5.4, после этого приступлю к его установке и установке на него Oracle 11g. А дальше пойдут опыты и всякие особые вопросы, возникающие в процессе.

четверг, 11 февраля 2010 г.

Запись звонков в Elastix

Задача: Включить запись разговоров и переопределить стандартную директорию хранения аудио файлов с этими записями.

Выполнение:
Первой логичной мыслью было бы в Web консоле зайти в раздел PBX - PBX Configuration - General Settings. Там есть раздел Call Recording, выставить Extension Recording Override: Enabled и указать путь к новому месту хранения файлов.
По моему понимаю это должно включить запись разговоров для всех, но как оказалось данное действие наоборот полностью убивает запись звонков если она изначально была. Кстати, мало ли пригодиться, путь для хранения файлов по умолчанию /var/spool/asterisk/monitor
В итоге для того чтобы сделать запись звонков в нужное мне место нужных пользователей необходимо:
1. Для конкретного пользователя (Extension) выставить опции Record Incoming и Record Outcoming в Always. Это приведет к тому что все разговоры с их участием будут записываться.
2. Отредактировать файл extensions_additional.conf. Для этого можно например в веб консоле перейти в раздел PBX - Tools - File Editor. В этом файле надо найти раздел [macro-record-enable] и внутри него, в последней строчке, заместо ${MIXMON_DIR} ввести абсолютный путь к своей дирректории. В моем случае этот кусок выглядит следующим образом:

[macro-record-enable]
include => macro-record-enable-custom
exten => s,1,GotoIf($["${BLINDTRANSFER}" = ""]?check)
exten => s,n,ResetCDR(w)
exten => s,n,StopMixMonitor()
exten => s,n(check),AGI(recordingcheck,${STRFTIME(${EPOCH},,%Y%m%d-%H%M%S)},${UNIQUEID})
exten => s,n,MacroExit()
exten => s,1+998(record),MixMonitor(/some_dir/${CALLFILENAME}.${MIXMON_FORMAT},,${MIXMON_POST})


После этого перезагружаем asterisk, например коммандой

service asterisk restart

Теперь разговоры выбранных пользователей сохраняются в указаной дирректории.

Кстати, в разделе PBX - monitoring они больше отображаться не будут.

Дополнение:
Как выяснилось в последствии (хотя это и было написано в самом начале файла extension_additional.conf), файл этот генериться автоматически, как следствие при изменениях он переписывается и все изменения теряются
В разделе [macro-record-enable] по умолчанию используется переменная MIXMON_DIR для указания куда складывать файлы, вот ее то и можно переопределить в файле globals_custom.conf
Достаточно туда добавить строку

MIXMON_DIR = /some_dir/

Теперь все файлы будут складываться в нужную нам директорию.

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

mount -t cifs //your_server_name_or_ip/dir_name /mnt -o username=username -o password=password

пятница, 22 января 2010 г.

Пересоздание конфигурации "Верба"

Задача не типична, не сложная и не особо сложная, возникает редко, но все таки бывает. Поэтому чтобы не забыть записываю.

Возникла проблема при запуске "Верба-клиент" выдается сообщение о несоответствии открытого и закрытого ключей, дискета вставлена правильная, ошибка не исчезает.
Если есть телефон поддержки и на том конце адекватные люди, то лучше связаться с ними, как сделал я. Если же нет, то читаем дальше.
Мы будем пересоздавать конфигурацию.

Во-первых, удаляем старую конфигурация, для этого:
1. Запускаем "Верба-клиент"
2. Нажимаем загрузить
3. Раскрывает дополнительные функции (стрелочка вниз слева)
4. Удалить текущую конфигурацию

Теперь пересоздадим конфигурацию.
Либо сразу появиться окно мастера предлагающего создать конфигурацию, либо надо нажать "Далее" и после этого оно возникнет.
Не ставим галочку "Детальная конфигурация", пусть все сделает мастер.

По результату работы мы должны зайти нормально в Вербу.
Перейдем в раздел справочники, если проблемы с кодировками, то идем в Настройки - общие настройки и снимаем галочку с DOS.

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

вторник, 19 января 2010 г.

установка OpenFire на CentOS 5

Задача:
Установить джаббер сервер OpenFire на CentOS, в качестве БД будет использоваться MySQL.
Я сейчас не буду очень подробно расписывать весь процесс установки, так как он достаточно прост и в инете можно найти множество подробных руководств с картинками. Вместо этого основное внимание уделю тем граблям на которые наткнулся.
Реализация:
Так как уже есть установленный CentOS 5.2, решено было разворачивать все именно на нем.
Однако, если просто установить БД и OpenFire, то при попытке зайти в консоль администратора мы будем получать ошибку Java, поэтому прежде чем перейти непосредственно к установке, обновим CentOS

yum update

Даем свое согласие на скачивание и установку кучи пакетов и уходим пить чай... зависимо от скорости инета, лично я и выспаться успел.
По окончанию обновления имеем CentOS 5.4
Сного переходим к установке Jabber сервера
Сначала установим MySQL

yum install mysql-server

запускаем установленный MySQL

service mysqld start

Зададим пароль администратора

mysqladmin -u root password "your_password"

Соеденяемся с MySQL

mysql -u root -p

Теперь необходимо создать базу и дать на нее привилегии (подробное описание пока не прикладываю)

Теперь все готово к установке OpenFire.
Качаем его с официального сайта коммандой вида

wget http://www.igniterealtime.org/downloadServlet?filename=openfire/openfire-3.6.4-1.i386.rpm

и устанавливаем

rpm -ivh openfire-3.6.4-1.i386.rpm

Запускаем

/etc/init.d/openfire start

Теперь открываем в браузере http://:9090
Попадаем в консоль администратора. Вполне очевидно доходим до шага выбора БД, сначала говорим что мы будем пользоваться внешней БД, затем в следующем окне настраиваем коннектор к MySQL.

Тут я столкнулся с граблями соеденения с базой данных. Если не получается, то необходимо убедиться в наличии прав у пользователя на коннект к базе, притом не только с локального хоста, убедиться что база вообще запущена и ее не режет фаервол. Немного помучавшись с правами все должно получиться.
Далее есче несколько понятных шагов по окончательной настройке.
По непонятной мне причине, попасть сразу в админскую консоль я не смог, хотя пароль вводил правильно, не мог же я быть настолько криворуким...
Пришлось востанавливать админский пароль, соеденившись с БД и выполнив запрос

update ofUser set password='', encruptedPassword=NULL where username='admin';

Вот теперь почти все... сервер установлен, работает, можно создать тестового пользователя и попробовать как все работает.
Но остается последняя проблема - проблема кодировок. Если присмотреться к таблицам, то все они в кодировке latin1, соответственно русские символы он не просто не правильно отображает, а не воспринимает вообще, заменяя на знаки вопросов.
Можно вручную сменить кодировки всех таблиц и полей, но это слишком долго...
Проще выгрузить базу, исправить в выгруженном файле кодировки при создании таблиц на utf8 и залить дамп обратно. В моем случае это полностью решило все проблемы с кодировками.
Вот пример куска скрипта БД, жирным выделен кусок где надо сменить кодировку

CREATE TABLE `ofExtComponentConf` (
`subdomain` varchar(255) NOT NULL,
`wildcard` tinyint(4) NOT NULL,
`secret` varchar(255) default NULL,
`permission` varchar(10) NOT NULL,
PRIMARY KEY (`subdomain`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

среда, 6 января 2010 г.

Более "простая" версия VNC Single Click

Сам uVNC Single Click безусловно хорош, но потребовалось вшить удаленный саппорт в комплексную программу по удаленной поддержки пользователей.
Каждый раз пересобирать и высылать новый exe-шник не то чтобы очень сложно, но не хочется зависить от стороннего компилятора, тем более online. Недолго порывшись был найден ряд offline компиляторов SC, но после некоторых размышлений на тему комплексного ПО по удаленной тех поддержке было решено что лучше бы иметь список операторов с которыми можно переговорить например через копоративный Jabber, через IP телефонию и в конце концов организовать сессию удаленного управления.
Поэтому наша сборка должна представлять из себя наиболее голый VNC сервер, который подхватывает параметры запуска из внешней программы.
Решение оказалось куда проще чем казалось вначале. Был взять winvnc.exe и разобраны параметры его запуска.
Для организации сессии по типу той которую делает uVNC SC необходимо выполнить

winvnc.exe -connect 192.168.1.1:5500.

Для тестирования был собран пакет из winvnc.exe и 2-х батников.
Первый батник непосредственно запускает winvnc по адрессу указанному в 1-ой переменной:

winvnc.exe -connect %1

Второй просто запускает первый батник с передачей ему адресса :.

create_session.bat 192.168.1.1:5500

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

понедельник, 4 января 2010 г.

Установка OCS NG Agent на Ubuntu 8.10

Введение:
Есть множество компов в основном под управлением Ubuntu 8.10, необходимо установить на них OCS NG Agent. Локального сервера репозиториев нет (был, но поломался, на восстановление как всегда времени не хватает). Теоретически на каждом компьютере установлен VNC, но во время массовой установки машин, доработки списка того что должно стоят и так далее карта сети нарисована не была, так же подошло время инвентарной описи. Так что все эти задачи решались единым порывом.
Задача:
Имеется сервер под управлением CentOS, на нем установлены OCS NG Inventory и GLPI. Необходимо установить на все машины учреждения OCS NG Agent.
Выполнение:
Сначала необходимо выяснить что есче необходимо установить кроме самого агента. В официальной документации перечислены следующие пакеты:
- libxml-simple-perl
- libcompress-zlib-perl
- libnet-ip-perl
- libwww-perl
- libdigest-md5-perl
- libnet-ssleay-perl
Пакета libdigest-md5-perl я в репозиториях Ubuntu не нашел, зато нашелся пакет libdigest-md5-file-perl. То что он не устанавливался ни коем образом на установке самого агента не отразилось.
Так же я устанавливал пакет nmap и ставил его совместно с агентом в надежде потом автоматически построить карту сети, но этих опытов пока не проводил.
Итак, закачиваем эти пакеты, затем закачиваем непосредственно OCS NG Agent.
Пишем небольшой скрипт устанавливающий эти пакеты, разархивирующий OCSNG_UNIX_AGENT.tar.gz и выполняющиц скрипт Makefile.PL из архива.

echo "Installing deb packages/n"
`dpkg -i libxml-simple-perl_2.18-1_all.deb`
`dpkg -i libcompress-zlib-perl_2.011-1_all.deb`
`dpkg -i libnet-ip-perl_1.25-2_all.deb`
`dpkg -i libwww-perl_5.812-1_all.deb`
`dpkg -i libnet-ssleay-perl_1.35-1ubuntu1_i386.deb`
`dpkg -i nmap_4.62-1ubuntu1_i386.deb`
echo "Extracting archive/n"
echo `tar xvzf OCSNG_UNIX_AGENT-1.02.tar.gz`
echo "Installing OCS NG Agent/n"
echo `cd Ocsinventory-Agent-1.0.1 && perl Makefile.PL && make`


Если есть локальный сервер репозиториев или все компьютеры подсоеденены к Интернет, то dpkg -i можно заменить на

apt-get install libxml-simple-perl libcompress-zlib-perl libnet-ip-perl libwww-perl libnet-ssleay-perl nmap

К сожелению мой скрипт в этом виде делает не всю работу по установке, поэтому после того как он отработает необходимо перейти в каталог агента и выполнить make install

cd Ocsinventory-Agent-1.0.1
make install


Во время установки надо будет ответить на несколько вопросов, большинство ответов я оставил по умолчанию, задав лишь адресс сервера и отказавшись от ввода tag.
Все, агент установлен, в том что все прошло успешно можно убедиться посмотрев список компьютеров в web консоле (http://your_ocs_server_ip/ocsreports)