Архив метки: Linux

Установка Alt Linux

Alt Linux — дистрибутив Linux, разработанный Российской компанией ООО Альт Линукс. В 1999-2000 годах дистрибутив основывался на дистрибутиве MandrakeLinux и представлял собой его русскую версию под названием Linux-Mandrake Russian Edition. Начиная с 2000 года началось замещение пакетов Mandrake собственными сборками программ.

На данный момент ALT Linux развивается как самостоятельная операционная система. Сейчас дистрибутивы ALT Linux являются отдельной ветвью развития Linux и не имеют никакого отношения к дистрибутивам Mandrake или Mandriva. В этой статье будет подробно рассмотрена установка ALT Linux с флешки на ноутбук или компьютер.

Читать

Лучшие аналоги Adobe в Linux

Для операционных систем Windows и macOS Adobe выпускает целый ряд программ для работы с фото, видео, аудио, документами и веб-страницами. Для Linux тоже существует немало программ для работы с медиаконтентом. Давайте разберемся в том, возможно ли использовать Linux для этих целей на профессиональном уровне.

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

Читать

Asterisk + MonAst

(Ubuntu 14.04 LTS, Asterisk 11, Apache2, MySQL5.5, PHP5.5, FreePBX 2.11 + MonAst3)

Проверяем установлен ли пакет python и его версию

# python —version

Python 2.7.6

Ставим пакет HTTP_Client:

# pear install HTTP_Client

WARNING: «pear/HTTP_Client» is deprecated in favor of «pear/HTTP_Request2»

WARNING: channel «pear.php.net» has updated its protocols, use «pear channel-update pear.php.net» to update

WARNING: «pear/HTTP_Request» is deprecated in favor of «pear/HTTP_Request2»

WARNING: «pear/Net_URL» is deprecated in favor of «pear/Net_URL2»

downloading HTTP_Client-1.2.1.tgz …

Starting to download HTTP_Client-1.2.1.tgz (10,269 bytes)

…..done: 10,269 bytes

downloading HTTP_Request-1.4.4.tgz …

Starting to download HTTP_Request-1.4.4.tgz (17,233 bytes)

…done: 17,233 bytes

downloading Net_URL-1.0.15.tgz …

Starting to download Net_URL-1.0.15.tgz (6,393 bytes)

…done: 6,393 bytes

downloading Net_Socket-1.0.14.tgz …

Starting to download Net_Socket-1.0.14.tgz (5,655 bytes)

…done: 5,655 bytes

install ok: channel://pear.php.net/Net_URL-1.0.15

install ok: channel://pear.php.net/Net_Socket-1.0.14

install ok: channel://pear.php.net/HTTP_Request-1.4.4

install ok: channel://pear.php.net/HTTP_Client-1.2.1

Как видим — в процессе установки говорит об устарении пакета и предлагает поставить более новый:

# pear install HTTP_Request2

WARNING: channel «pear.php.net» has updated its protocols, use «pear channel-update pear.php.net» to update

downloading HTTP_Request2-2.2.1.tgz …

Starting to download HTTP_Request2-2.2.1.tgz (109,716 bytes)

…………………….done: 109,716 bytes

downloading Net_URL2-2.2.0.tgz …

Starting to download Net_URL2-2.2.0.tgz (20,071 bytes)

…done: 20,071 bytes

install ok: channel://pear.php.net/Net_URL2-2.2.0

install ok: channel://pear.php.net/HTTP_Request2-2.2.1

Пакеты Twisted и StarPy будем ставить из исходников.

# cd /usr/src/

# wget https://pypi.python.org/packages/source/T/Twisted/Twisted-15.5.0.tar.bz2#md5=0831d7c90d0020062de0f7287530a285

# apt-get install python-starpy

# tar -xvf Twisted-15.5.0.tar.bz2

# cd Twisted-15.5.0/

# python setup.py install

Traceback (most recent call last):

File «setup.py», line 13, in <module>

import setuptools

ImportError: No module named setuptools

Выдало ошибку о недоступности пакета setuptools

Ставим его:

# wget https://bootstrap.pypa.io/ez_setup.py -O — | python

Finished processing dependencies for setuptools==19.2

Повторяем после установки соответствующего пакета

# python setup.py install

twisted/test/raiser.c:4:20: fatal error: Python.h: Нет такого файла или каталога

#include «Python.h»^

compilation terminated.

error: command ‘x86_64-linux-gnu-gcc’ failed with exit status 1

Снова ругается

Применим команду на установку python с библиотеками

# apt-get install python-dev

После повторим ввод команды

# python setup.py install

Finished processing dependencies for Twisted==15.5.0

Готово!

Ну и самый главный виновник торжества. На момент написания актуальная версия — 3.0b4:

# wget http://downloads.sourceforge.net/project/monast/Monast%20for%20Asterisk%201.4%2C%201.6%20and%201.8/3.0b4/monast-3.0b4.tar.gz

# tar -xvf monast-3.0b4.tar.gz

# cd monast-3.0b4

# ./install.sh

Для Ubuntu — копируем скрипт от Debian и добавляем его в автозагрузку:

# cp contrib/init.d/rc.debian.monast /etc/init.d/monast

# chmod 755 /etc/init.d/monast

# update-rc.d monast defaults 91 60

Настроим /etc/monast.conf

[global]

# Bind client connetions on host:port

bind_host = 127.0.0.1

bind_port = 5039

# Use client autentication on browser.

#auth_required = false ; по умолчанию

auth_required = true ; Указываем что аутентификация обязательна

##

## Servers Definitions

##

[server: Amazon] # Server name can not contains space

hostname = 127.0.0.1

hostport = 5038

username = monast

password = password

# Default user context

#default_context = default ; по умолчанию

default_context = from-internal ; для FreePBX

# Context to use in transfer calls

#transfer_context = default ; по умолчанию

transfer_context = from-internal ; для FreePBX

# Context and prefix for meetme

#meetme_context = default ; по умолчанию

meetme_context = from-internal ; для FreePBX

meetme_prefix  =.

#[server: Server_2] # Server name can not contains space

#hostname = 192.168.0.2

#hostport = 5038

#username = ami_username

#password = ami_password

# Default user context

#default_context = default

# Context to use in transfer calls

T#ransfer_context = default

# Context and prefix for meetme

#meetme_context = default

#meetme_prefix  =

[user: ubuntu]

secret  = secret

roles   = originate,queue,command,spy

servers = ALL

Запуск

# /etc/init.d/monast start

Starting MonAst…                                                              [OK]

Все. Можно подключаться и проверять. Открываем браузер и в строке адреса вбиваем: http://localhost/monast/

Источники: http://habrahabr.ru/post/143053/

http://asterisk-pbx.ru/wiki/artikle/monast



2016-09-14T08:28:31
Asterisk

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

Понадобилось настроить автоматическое выключение двух гипервизоров Xenserver 6.5 при отключении электроэнергии с помощью apcupsd. Информация уже не очень актуальная, так как сейчас вышел новый гипервизор под версией 7, но тем не менее, хочу зафиксировать свой опыт, может еще кому-нибудь пригодится. Подсказу для XenServer 7 тоже приведу. Был приобретен один UPS APC Smart-UPS SC 1500VA/865W и подключен по USB порту к одному из xenserver.

Читать

Как найти текст или файл в Linux используя bash

Для поиска текста используем следующую команду:

grep -rnw ‘directory’ -e «pattern»

Пример:
$ grep -rnw ‘/var/www/’ -e «DOCTYPE html»

Если выводится слишко много  информации то можно добавить команду “less”
$ grep -rnw ‘/var/www/’ -e «DOCTYPE html» | less

Читать

Мониторинг состояния Asterisk с помощью MonAst

Осмотр возможностей

MonAst позиционируется разработчиками как инструмент мониторинга, который действует как панель оператора для Asterisk. Распространяется по лицензии BSD. Проект написан с использованием Python (демон для связи с Asterisk по AMI), PHP, JS (AJAX).

Из возможностей просмотра (в режиме real-time) — следующее:

  • Работа с несколькими серверами (с помощью переключения между ними)
  • Многопользовательский режим с указанием прав доступа
  • Отображение пользователей и пиров (SIP, IAX, DAHDI, Khomp, etc…)
  • Отображение активных каналов и вызовов (с именем канала и CallerID)
  • Каналы конференции (с отображением подключённых пользователей)
  • Припаркованные звонки (Parked Calls)
  • Очереди (с отображением статистики, участников и ожидающих клиентов)

Из возможностей выполнения операций:

  • Выполнение (инициация) вызовов
  • Трансфер вызовов
  • Сброс вызовов
  • Паркование вызовов
  • Прослушивание звонков (Spy Calls)
  • Приглашение участников в конференцию
  • Удаление участников конференции
  • Добавление пользователей (или пиров) как участника любой очереди
  • Удаление участников из очереди
  • Постановка и снятие с паузы участников очереди
  • Выполнение CLI команд

Как видно — список возможностей достаточно обширный.

Установка

Подопытной системой у нас будет чистая Ubuntu 10.10 с базовыми программами и обновлениями. MonAst не обязательно ставить на хосте с Asterisk. У меня, к примеру, MonAst стоит локально на ноутбуке — и я прекрасно мониторю все наши 6 серверов с Asterisk.

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

Так как демон, с помощью которого происходит обмен между Asterisk и MonAst (посредством AMI — Asterisk Manager API) написан на Python, то первым делом проверяем его присутствие в системе:

it@ubuntu-test ~ $ python --version

Python 2.6.6


Если видим нечто подобное — значит все в порядке. Если по каким то причинам его нет — выполняем команду:

it@ubuntu-test ~ $ sudo apt-get update && sudo apt-get install python


Двигаемся дальше.

Так как все это будет отображаться через web-интерфейс, то нужно иметь установленный http сервер с поддержкой php, а так же php-pear. Если ранее данного комплекта не стояло — выполняем команду (дополнительно поставим mc — для удобства навигации и редактирования):

it@ubuntu-test ~ $ sudo apt-get install apache2 php5 php-pear mc


Ну и напоследок — установка зависимостей для обсуждаемого продукта. Этот список у нас невелик:

  1. Twisted Python 10.1+
  2. zope.interface 3.6+
  3. Starpy SVN-Trunk
  4. PHP PEAR Packages: (HTTP_Client)

Пакет zope.interface уже стоял в системе (был в наличии из коробки).

Ставим пакет HTTP_Client:

it@ubuntu-test:/usr/src$ sudo pear install HTTP_Client

WARNING: "pear/HTTP_Client" is deprecated in favor of "pear/HTTP_Request2"

WARNING: channel "pear.php.net" has updated its protocols, use "pear channel-update pear.php.net" to update

WARNING: "pear/HTTP_Request" is deprecated in favor of "pear/HTTP_Request2"

WARNING: "pear/Net_URL" is deprecated in favor of "pear/Net_URL2"

downloading HTTP_Client-1.2.1.tgz ...

Starting to download HTTP_Client-1.2.1.tgz (10,202 bytes)

.....done: 10,202 bytes

downloading HTTP_Request-1.4.4.tgz ...

Starting to download HTTP_Request-1.4.4.tgz (17,109 bytes)

...done: 17,109 bytes

downloading Net_URL-1.0.15.tgz ...

Starting to download Net_URL-1.0.15.tgz (6,303 bytes)

...done: 6,303 bytes

downloading Net_Socket-1.0.10.tgz ...

Starting to download Net_Socket-1.0.10.tgz (5,429 bytes)

...done: 5,429 bytes

install ok: channel://pear.php.net/Net_URL-1.0.15

install ok: channel://pear.php.net/Net_Socket-1.0.10

install ok: channel://pear.php.net/HTTP_Request-1.4.4

install ok: channel://pear.php.net/HTTP_Client-1.2.1


Как видим — в процессе установки говорит об устаревании пакета и предлагает поставить более новый:

it@ubuntu-test:/usr/src$ sudo pear install HTTP_Request2


Пакеты Twisted и StarPy будем ставить из исходников. Но при установке выявились еще зависимости, которые и исправляем (попутно перейдем в режим суперпользователя):

it@ubuntu-test:~$ sudo su

root@ubuntu-test:~$ cd /usr/src/

root@ubuntu-test:/usr/src# wget http://pypi.python.org/packages/source/T/Twisted/Twisted-12.0.0.tar.bz2#md5=cf49a8676c21c50faf1b42b528049471

root@ubuntu-test:/usr/src# wget http://downloads.sourceforge.net/project/starpy/starpy/1.0.0a13/starpy-1.0.0a13.tar.gz

root@ubuntu-test:/usr/src# tar -xvf Twisted-12.0.0.tar.bz2

root@ubuntu-test:/usr/src# tar -xvf starpy-1.0.0a13.tar.gz

root@ubuntu-test:/usr/src# apt-get install build-essential gcc-4.5 libssl-dev python-dev

root@ubuntu-test:/usr/src# cd Twisted-12.0.0

root@ubuntu-test:/usr/src/Twisted-12.0.0# python setup.py install


Если видим надпись «Finished processing dependencies for Twisted==12.0.0» — значит установка прошла успешно и переходим дальше. Если выскакивает ошибка — то скорее не хватает какого-то компонента. Проверте по списку — все ли зависимости установлены? Идем дальше:

root@ubuntu-test:/usr/src/Twisted-12.0.0# cd ..

root@ubuntu-test:/usr/src# cd starpy-1.0.0a13

root@ubuntu-test:/usr/src/starpy-1.0.0a13# python setup.py install

root@ubuntu-test:/usr/src/starpy-1.0.0a13# cd ..


Ну и самый главный виновник торжества. На момент написания актуальная версия — 3.0b4:

root@ubuntu-test:/usr/src# wget http://downloads.sourceforge.net/project/monast/Monast%20for%20Asterisk%201.4%2C%201.6%20and%201.8/3.0b4/monast-3.0b4.tar.gz

root@ubuntu-test:/usr/src# tar -xvf monast-3.0b4.tar.gz

root@ubuntu-test:/usr/src# cd monast-3.0b4

root@ubuntu-test:/usr/src/monast-3.0b4# ./install.sh


В процессе установки скрипт задаст пару вопросов относительно путей. Если предложенные им варианты устраивают — соглашаемся. Иначе прописываем свои данные. Я лишь изменил путь, куда ложатся .php файлы

MonAst HTML path [/var/www/html/monast]: /var/www/asterisk/monast/



Может показаться что на этом установка закончена. Но не тут то было. Стартовый скрипт /etc/init.d/monast ставится лишь для систем SuSE, RedHat, Debian, Gentoo, Slackware, FreeBSD. Но не Ubuntu и ей подобные. Потому копируем скрипт от Debian и добавляем его в автозагрузку:

root@ubuntu-test:/usr/src/monast-3.0b4# cp contrib/init.d/rc.debian.monast /etc/init.d/monast

root@ubuntu-test:/usr/src/monast-3.0b4# chmod 755 /etc/init.d/monast 

root@ubuntu-test:/usr/src/monast-3.0b4# update-rc.d monast defaults 91 60


Вот теперь установка у нас окончена. Можно переходить к настройке.

Настройка

Перво наперво нужно выполнить настройку самого Asterisk, дабы сабжевое ПО могло успешно подключится и обмениваться информацией. На сервере с Asterisk переходим по пути /etc/asterisk/ и правим файл manager.conf. Если серверов несколько — делаем подобные поправки на нужных.

root@asterisk ~ $ mcedit /etc/asterisk/manager.conf


; 

; AMI - The Asterisk Manager Interface 

; 



[general] 

enabled = yes		; Активируем AMI

port = 5038		; Порт, по которому к данному сервису будет подключаться MonAst

bindaddr = 0.0.0.0	; Прослушиваем все интерфейсы в системе для принятия подключения

displayconnects = yes	; Показывать в консоли Asterisk о факте подключения



webenabled = no 	; Выключаем встроенный в Asterisk static_http



allowmultiplelogin = yes	; Разрешаем вход вход под одним и тем же пользователем с разных мест.

timestampevents = yes		; Добавлять метку времени для событий



; debug = on	; Можно включить отладочный режим для сообщений AMI



[monast_user]                                                                                                                  

secret=qwerty123				; Пароль для подключения

deny=0.0.0.0/0.0.0.0				; Запрещаем подключение с любого адреса

permit=127.0.0.1/255.255.255.0		; И постепенно разрешаем нужные

permit=192.168.1.10/255.255.255.0		; Так разрешаем конкретный хост

permit=192.168.2.0/255.255.255.0		; А вот так можно разрешить подсеть

writetimeout=100				; Таймаут для посылки команд



; Разрешения для данного пользователя. Можно указать all, но так наглядней

read=system,call,log,verbose,command,agent,user,config,originate,reporting

write=system,call,log,verbose,command,agent,user,config,originate,reporting


После чего перезагрузим конфигурацию Asterisk для модуля manager:

root@asterisk$ asterisk -rx "manager reload"


На этом настройка Asterisk закончена. Переходим к конфигурации самого MonAst’а.

Файл с параметрами находится по пути /etc/monast.conf. Его и правим. Скажу наперед — сложностей в настройке не возникло, приведенные в файле комментарии четко описывают тот или иной параметр. Но для примера приведу свой пример файла

root@ubuntu-test:/usr/src/monast-3.0b4# cd /etc/

root@ubuntu-test:/etc# mcedit monast.conf


# Copyright (c) 2008-2011, Diego Aguirre

# All rights reserved.



##

## Global Section

##

[global]



# Bind client connetions on host:port

bind_host = 127.0.0.1		; Разрешаем подключения с локального хоста

bind_port = 5039		; Порт для подключения к демону.



# Use client autentication on browser 

auth_required = true		; Указываем сто аутентификация обязательна



## ===================================



##

## Servers Definitions

##



[server: Server1]		; Параметры для первого сервера

hostname = 192.168.1.1

hostport = 5038

username = monast_user

password = qwerty123



# Default user context

default_context = default



# Context to use in transfer calls

transfer_context = default



# Context and prefix for meetme

meetme_context = default

meetme_prefix  = 



[server: Server2]		; Параметры для второго сервера

hostname = 192.168.2.1

hostport = 5038

username = monast_user

password = qwerty123



# Default user context

default_context = default



# Context to use in transfer calls

transfer_context = default



# Context and prefix for meetme

meetme_context = default

meetme_prefix  = 



## ===================================



##

## Peers Definitions

##

[peers]

# sort peers (options: channel, callerid)

sortby = callerid



# default show/hide

default = show



# hide peer when default = show

;<Server Name>/SIP/user-1 = hide



# show peer when default = hide

;<Server Name>/SIP/user-2 = show



# always show peer.

;<Server Name>/SIP/user-3 = force



# force CallerID (only in forced mode)

;<Server Name>/SIP/user-4 = force,Diego Aguirre <5555>



# Create peer groups

;<Server Name>/@group/Group 1 = SIP/user-1,SIP/user-2

;<Server Name>/@group/Group 2 = SIP/user-3,SIP/user-4



## ===================================



##

## Meetmes / Conferences Definitions

##

[meetmes]

# default show/hide

default = hide



# hide meetme when default = show

;<Server Name>/1234 = hide



# show meetme when default = hide

;<Server Name>/1234 = show



# always show meetme

;<Server Name>/1234 = force



## ===================================



##

## Queues Definitions

##

[queues]

# defualt show/hide

default = hide



# show queue queue01

;<Server Name>/queue01 = show



# show queue queue02 with display name Support

;<Server Name>/queue02 = show,Support



# hide queue queue03

;<Server Name>/queue03 = hide



# Map Member name

;<Server Name>/@member/SIP/user-1 = Diego Aguirre <5555>



## ===================================



## Define users and roles to use on auth_required is set to true

## roles must be:

##                originate : user can originate, transfer, park and drop calls

##                agent     : user cans add, remove, pause and unpause members on queues

##                command   : user can execute asterisk cli commands

##                spy       : user can start a spy



[user: admin]		; Мего-админ

secret  = SuperPuperDruper

roles   = originate,queue,command,spy 

servers = ALL



[user: manager]	; Пользователь с возможностью просмотра обеих (всех) серверов

secret  = password

roles   = originate

servers = ALL



[user: server1]		; Пользователь с возможностью просмотра одного (первого) серверов

secret  = 12345

roles   = originate

servers = Server1



[user: server2]		; Пользователь с возможностью просмотра и выполнения команд на одном (втором) сервере 

secret  = 54321

roles   = originate,command

servers = Server2


Сохраняем изменения и перезагружаем демон:

root@ubuntu-test:/etc# /etc/init.d/monast restart


Все. Можно подключаться и проверять. Открываем браузер и в строке адреса вбиваем: http://localhost/asterisk/monast/

Если ставили «auth_required = true» то вводим логин, пароль — и наслаждаемся рабочим инструментом 🙂

MonAst Mixed Pannels

Важное замечание. В режиме «без аутентификации» все, кто работают в панели оператора MonAst — имеют полные права, т.е. являются «суперпользователями». А как мы знаем «Оружие, данное в неумелые руки, может навредить». Будьте внимательны.

Так же в файле /var/www/asterisk/monast/lib/config.php находятся параметры адреса и порта, где работает демон monast.py, параметры отображение вкладок debug и cli, а так же некоторых не менее интересных параметров.

Обзор возможностей

Теперь же пробежимся по возможностям данного программного продукта.

После входа на web-интерфейс мы видим несколько вкладок. А если быть точнее:

  • Mixed Pannels — Вкладка с практически всем разделами сразу. Удобство заключается в том, что можно отобразить лишь нужные и, не переключаясь, видеть необходимую информацию в одном месте.
  • Peers/Users — Просмотр и управление достуными пирами и пользователями.
  • Meetme Rooms — Просмотр и управление конференциями
  • Channels/Calls — Просмотр и управление активными вызовами и поднятыми каналами.
  • Parked Calls — Просмотр и управление припаркованными вызовами
  • Queues — Просмотр и управление очередью звонков
  • Asterisk CLI — Командная строка Asterisk. Если у пользователя есть права выполнения команд в консоли, то именно здесь можно ввести нечто схожее с «core show version» 🙂

Разобраться в возможностях не составляет труда и, возможно, даже лучше будет если Вы сами пробежитесь и опробуете доступные функции — так вы четко будете понимать что и как работает. Но я все таки опишу парочку интересных из них 🙂

Originate call (инициирование вызова). Из названия функции ясно — можно соединить внутреннего абонента с каким либо номером (если он, номер, сможет обработаться Вашим dialplan’ом). Для выполнения функции нужно нажать правой кнопкой мыши (далее по тексту — пкм) на нужном аккаунте и выбрать соответствующий пункт. В появившемся окне вводим нужный номер и, вуаля — у выбранного человека звонит телефонный аппарат, он берет трубку и Asterisk соединяет его с выведенным нами номером. Так же можно перетащить мышкой один аккаунт на другой и, согласившись — инициировать соединение между ними.

Meetme Rooms (комната конференции). Перейдя в данный раздел можно управлять уже созданными конференциями, либо создать новую и пригласить туда определённых участников. Для создания своей конференции — переходим в соответствующий раздел, нажимаем «Create Dynamic Meetme» и в окне вводим запрашиваемую информацию. Нажали «Ок» — и процесс пошел-поехал 🙂

Spy (прослушивание вызова). Что она делает? Из названия можно понять — дает возможность подключится к выбранному разговору и прослушать речевой поток. Функция может быть полезна при использовании в call-центрах для контроля и проверки агентов. При этом в процессе разговора собеседники даже не подозревают о факте прослушивания. По крайней мере я, тестируя данную возможность, никакого сигнала или уведомления не слышал. Для того, чтобы пользователь панели имел право на прослушивание — нужно чтобы в поле roles его прав доступа присутствовало spy. Потому для того, чтоб ограничить использование данной функции с нехорошим умыслом — включайте аутентификацию для доступа к панели и давайте права на ее использование только доверенным для этого пользователям. Начальнику отдела, например 🙂

Заключение

MonAst, как и альтернативные проекты с подобной функциональностью (FOP, Links и пр.) однозначно имеет право на существование и, соответственно, использование в рабочем процессе.

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

Ссылки



2016-09-11T16:34:23
Asterisk