Asterisk/FreePBX возврат при переводе вызова

  • Asterisk
Часто требуется функция возврата звонка при переводе, если абонент не взял трубку.

globals_custom.conf:
TRANSFER_CONTEXT = custom-test_transfer

extensions_custom.conf:
[custom-test_transfer]
exten => _X.,1,NoOp(Entering custom-test_transfer)
exten => _X.,n,Set(timeoutd=25) ; set timeout in seconds
exten => _X.,n,Set(extLeng=${LEN(${EXTEN})})
exten => _X.,n,NoOp(The extenlength is ${extLeng})
exten => _X.,n,Dial(Local/${EXTEN}@from-internal,${timeoutd})
exten => _X.,n,Set(CALLERID(name)=RB:${CALLERID(name)})
exten => _X.,n,Dial(Local/${BLINDTRANSFER:4:${extLeng}}@from-internal)
exten => _X.,n,Hangup()

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

Ещё раз прочитайте внимательно вопрос в заголовке. Прочитали? А теперь без всякого промедления правильный ответ:

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

Читать дальше →

Уведомление на почту о заполнении диска в Linux

  • Linux
Для отправки уведомления у вас должна работать стандартная утилита mail. Адреса кому отправлять уведомление для удобства можно прописать в /etc/aliases, я добавляю строку admins и в нее прописываю нужные адреса.
Сам скрипт (найден где-то на форуме, немного переделан под себя):
#!/bin/bash

##Global vars
threshold=90  ##Порог критического значения свободного места, после 90% шлем уведомление
subject="Disk status $( hostname )"
temp_file=/tmp/disk_status

##Function      : check_disk_space
##Description   : it will check all partitions and it will return                  # non-zero exist status if use >= threshold 

check_disk_space(){
         awk -v threshold=$threshold 'BEGIN{
         status = 0
         cmd = "LC_ALL=C df -Ph" 
         while( cmd | getline ) {
             used=$5 
             if ( $1 != "Filesystem" && int(used) >= threshold ) {
                 printf "CRITICAL : Disk space alert (%s) :: [ Partition %s | mount point %s ]n", 
                 used,$1, $NF > "/dev/stderr"
                 status = 1
             }
         }
    exit status
    }'
}

check_disk_space > $temp_file 2>&1

if [[ -s $temp_file ]]
   then
       mail -s $subject admins < $temp_file
fi

Адресная книга для телефонов Grandstream из FreePBX 13

Адресная книга удобная опция, которую часто спрашивают заказчики, поэтому разберемся как прописать ее для телефонов Grandstream

Сначала нам нужен скрипт который выгрузит номера и их Caller ID (он же поле «Имя») из настроек внутренних номеров FreePBX. Я делал на версии FreePBX 13, возможно будет работать и на более ранних.
<?php
$config = include("db/config.php");

$db = new PDO($config["db"], $config["username"], $config["password"], $config["options"]);

$sql = "SELECT extension, name from users";   // Делаем выборку записей книги
$q = $db->prepare($sql);
$q->execute();
$rows = $q->fetchAll();

unlink($config["pb_file_gs"]);  // Удалим старый файл

$fp = fopen($config["pb_file_gs"],"w+");
fputs($fp, '<?xml version="1.0" encoding="UTF-8"?><AddressBook>');

foreach($rows as $row) {         // Пробежим по всем записям, подготовив XML файл нужного вида
    	fputs($fp, '<Contact>
                        <FirstName>'.$row['name'].'</FirstName>
                        <LastName></LastName>
                        <Phone>
                                   <phonenumber>'.$row['extension'].'</phonenumber>
                                   <accountindex>1</accountindex>
                                   <downloaded>1</downloaded>
                        </Phone>
                        <Groups>
                                   <groupid>4</groupid>
                        </Groups>
            </Contact>
	'); 
}
fputs($fp, '<Group id="4">Server</Group> </AddressBook>');
fclose($fp);
?>


Файл «db/config.php»
<?php
return array(
    "db" => "mysql:host=localhost;dbname=asterisk",
    "pb_file_gs" => "/var/www/html/phonebook/phonebook.xml",
    "username" => "freepbxuser",     //Mysql login
    "password" => "123456", //Mysql password
    "options" => array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8')
);


Потом заходим в телефон «Phonebook -> Phonebook Management»

Enable Phonebook XML Download -> Enabled, HTTP
Phonebook XML Server Path -> http://serverpbx/phonebook/
Phonebook -> Phonebook Management
Phonebook Download Interval -> 60
Remove Manually-edited Entries on Download -> No

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

Как проверить какие компьютеры в сети уязвимы к WannaCry Wcry?

Есть много способов, wsus, sccm, kaspersky, nod32 и т.д. Но я решил попробовать другой метод, на хабре был скрипт на powershell, который опрашивал сеть и выдавал список уязвимых ПК. Я его немного переделал и попробовал на своей сети. Возможно пригодится и вам.
Список компьютеров нужно поместить в файл comp.csv формата:
name
p1
pc2
...

И сам скрипт
# Powershell
# Скрипт проверки на подверженность атаки Wana decrypt0r 2.0 (WannaCry)
# Не проверяет заражена ли система (мне пока не чем проверить)
# При запуске с клиентского ПК требует установленной RSAT и возможно WMF5
# habrahabr / @sergey-s-kovalev / 15.05.2017 / free for use
cls

$ResultPath = "D:\wannacry\" # Указываем путь до папки, куда складывать отчеты

# Задаем списки для сохранения списков ПК
$SafeHosts = @()
$VulnerabilityHosts = @()
$OfflineHosts = @()
$NotManagedHosts = @()

$SafeDate = Get-Date -Date 11-2-2017 -Hour 0 -Minute 0 -Second 1 # Определяем безопасную дату файла

#имя файла с списком ПК
import-csv d:\wannacry\comp.csv | foreach { 

$ComputerName=$_.name

Write-host "Проверяем",$ComputerName

if ((Test-connection $ComputerName -count 2 -quiet) -eq "True")
  { 
      $Command = {(Get-Item c:\WINDOWS\system32\drivers\srv.sys).LastWriteTime} # Команда которая получает дату файла
     
     $Result = "Empty" # Задаем значение по умолчанию

     # Пробуем запустить команду на удаленном ПК
     Try {$Result = Invoke-Command -ComputerName $ComputerName -ScriptBlock $Command -ErrorAction Stop} Catch {write-host -foreground yellow $ComputerName, "включен, но управление через WinRM недоступно";$NotManagedHosts = $NotManagedHosts + $ComputerName}
     
     
     if ($Result -ne "Empty") { # Если результат не пустой
     # Сравнить дату файла с контрольной датой
        if ($Result -lt $SafeDate) {write-host -foreground red $ComputerName,"уязвим! Дата файла",$Result;$VulnerabilityHosts = $VulnerabilityHosts + $ComputerName} else {write-host -foreground green $ComputerName, "имеет необходимое обновление. Дата файла",$Result;$SafeHosts = $SafeHosts + $ComputerName} 
        }
    # Если результат пинга пустой
  } else {
	write-host -foreground DarkRed $ComputerName, "не в сети, не имеет IP-адреса или фаерволлом запрещен PING";$OfflineHosts = $OfflineHosts + $ComputerName
  } 
}
$LogTime = get-date -format yyyy-MM-dd_HH-mm-ss # Получить текущее время

# Выгрузить списки компьютеров в той или иной категории
$SafeHosts | Out-file -FilePath $ResultPath$LogTime"_-SafeHosts.log" -Encoding utf8 -Force
$VulnerabilityHosts | Out-file -FilePath $ResultPath$LogTime"_-VulnerabilityHosts.log" -Encoding utf8 -Force
$OfflineHosts | Out-file -FilePath $ResultPath$LogTime"_-OfflineHosts.log" -Encoding utf8 -Force
$NotManagedHosts | Out-file -FilePath $ResultPath$LogTime"_-NotManagedHosts.log" -Encoding utf8 -Force

WannaCry лечится Eset NOD32?

Eset сегодня написали на своем сайте следующее:
5. Для детектирования еще неизвестных угроз в наших продуктах используются поведенческие, эвристические технологии. Если вирус ведет себя как вирус — скорее всего, это вирус. Так, облачная система ESET LiveGrid успешно отражала атаку с 12 мая, еще до обновления сигнатурных баз.
Это довольно странно, потому что я видел сам как успешно заразились десятки компьютеров предприятия, на котором использовали NOD32. Базы антивируса были обновлены. Но Windows не была обновлена, да… В этом проблема.
Там же пробовали сканировать зараженный комп касперским с последними базами, тоже не видел. Единственное кто 12-14 мая успешно лечил комп, это Dr.WEB.

Ссылки на официальные обновления Windows от вируса WannaCry Wcry

Патч MS17-010 для исправления уязвимости Windows от вируса WCry, Petya

Обновление для системы безопасности Windows XP SP3 (KB4012598)
www.microsoft.com/ru-RU/download/details.aspx?id=55245

Windows 8.1 Update for x64-based Systems (KB4012213)
www.catalog.update.microsoft.com/Search.aspx?q=KB4012213

Windows 8.1 Update (KB4012213)
www.catalog.update.microsoft.com/Search.aspx?q=KB4012213

Каталог обновлений для Windows 7 и Windows 2008 R2
www.catalog.update.microsoft.com/Search.aspx?q=KB4012215

Ежемесячный набор исправлений качества системы безопасности для Windows 7 (KB4012215), март 2017 г.
March, 2017 Security Monthly Quality Rollup for Windows 7 (KB4012215)
download.windowsupdate.com/d/msdownload/update/software/secu/2017/03/windows6.1-kb4012215-x86_e5918381cef63f171a74418f12143dabe5561a66.msu

Ежемесячный набор исправлений качества системы безопасности для систем Windows 7 на базе процессоров x64 (KB4012215), март 2017 г.
March, 2017 Security Monthly Quality Rollup for Windows 7 for x64-based Systems (KB4012215)
download.windowsupdate.com/c/msdownload/update/software/secu/2017/03/windows6.1-kb4012215-x64_a777b8c251dcd8378ecdafa81aefbe7f9009c72b.msu

Накопительный пакет обновления для Windows 10 Version 1511 (KB4013198)
Накопительный пакет обновления для Windows 10 Version 1511 для систем на базе процессоров x64 (KB4013198)
www.catalog.update.microsoft.com/Search.aspx?q=KB4013198

Накопительный пакет обновления для Windows 10 Version 1607 (KB4013429)
Накопительный пакет обновления для Windows 10 Version 1607 для систем на базе процессоров x64 (KB4013429)
Накопительный пакет обновления для Windows Server 2016 для систем на базе процессоров x64 (KB4013429)
www.catalog.update.microsoft.com/Search.aspx?q=KB4013429

FreePBX 13 не применяет изменения в конфигурации

FreePBX 13 в Centos 7 выдал ошибку:
Unable to connect to remote asterisk (does /var/run/asterisk/asterisk.ctl exist?)
Exception: Unable to connect to Asterisk through the CLI in file /var/lib/asterisk/bin/retrieve_conf on line 30
Stack trace:
1. Exception->() /var/lib/asterisk/bin/retrieve_conf:30

А дело в том, что изменились права на какой-то папке и нужно обновить права, запустим для этого скрипт
/usr/sbin/fwconsole start

Можете добавить его в запуск при загрузке в файл /etc/rc.d/rc.local

Не работает fail2ban... опять

  • Linux
По неведомой причине у меня уже 2ой раз после обновления ломается fail2ban. Сначала перестал работать парсер, но получилось найти в сети у кого была такая же проблема и решение. Проблема была в том, что fail2ban не находил в логах нужных записей, все время показывал, что ничего не обнаружено. Для решения проблемы нужно было вернуть старый парсер, для чего в конфиге добавить такую строку:
[DEFAULT]
backend = gamin

Но разработчики не спят, а кодят! Поэтому после следующего обновления через yum update прилетело обновление fail2ban до 0.9.2. И вдруг перестало работать обнаружение проблем в ssh. При старте выдает «jail ssh does not exist». Попытки перенастроить и нагуглить такую проблему оказались безрезультатны. Поэтому обновил fail2ban вручную до актуальной версии 0.9.6. Вроде работает :)
Для обновления выполните следующее:
cd /usr/src
git clone https://github.com/fail2ban/fail2ban.git
cd fail2ban/
python setup.py install
service fail2ban restart

Как узнать на каком порту mac адрес?

Для диагностики иногда требуется посмотреть за каким портом микротика находится определенный MAC адрес. Если просто зайти IP — Arp, то мы увидим таблицу mac адресов, но все на одном bridge интерфейсе. Чтобы узнать на каком он интерфейсе физически, нужно смотреть тут:
[admin@MikroTik] > interface bridge host print 
Flags: L - local, E - external-fdb 
BRIDGE            MAC-ADDRESS       ON-INTERFACE          AGE                 
bridge-LAN        00:0B:82:95:B7:1D ether10-slave-local   0s                  
bridge-LAN        00:1C:F0:CE:A7:A9 ether10-slave-local   1s                  
bridge-LAN        00:1F:16:F0:AE:A7 ether9-slave-local    0s                  
bridge-LAN        0C:84:DC:12:4C:49 wlan1                 0s                  
bridge-LAN        34:14:5F:77:46:0D wlan1                 3m32s               
bridge-LAN        34:69:87:93:A2:BD wlan1                 52s                 
bridge-LAN        50:2E:5C:C3:5F:94 wlan1                 44s                 
bridge-LAN        70:8B:CD:32:9E:C9 wlan1                 6s                  
bridge-LAN        AC:22:0B:14:5C:AE ether5                0s                  
bridge-LAN        AC:22:0B:14:5D:45 ether7-slave-local    1s                  
bridge-LAN        AC:22:0B:14:60:C7 ether10-slave-local   0s                  
bridge-LAN        AC:22:0B:14:61:B1 ether10-slave-local   0s                  
bridge-LAN        B8:70:F4:FF:18:F6 ether9-slave-local    0s                  
bridge-LAN        B8:98:F7:F1:30:C7 wlan1                 5s

Как отключить подписку в DepositPhotos

Это оказалось непростой задачей :) Пролазил все их менюшки, везде мне предлагалось только расширить пакет услуг. В FAQ тоже ничего не было, поэтому пришлось обращаться в техподдержку. Там подсказали вот что:
Для непрерывного сервиса на всех подписках включено автоматическое продление. Вы всегда можете самостоятельно отключить автоматическое продление в Вашем кабинете на сайте. Для того, чтобы отменить автопродление, пройдите в меню покупателя ru.depositphotos.com/home.html -> Настройки подписки (выпадающее окно) -> переключите с ON на OFF и далее следуйте подсказкам.

Пройдите по ссылке ru.depositphotos.com/image.html и выберите Настройки

Настройка fail2ban для защиты Elastix от подбора пароля для веб-интерфейса

  • Linux
Мануалов по настройке защиты asterisk много, а защиты самого elastix почему-то не нашел. Вопросы на форумах висят без ответов. Сделал сам, метод работает.
Создадим фильтр
vim /etc/fail2ban/filter.d/elastix-login.conf

[Definition]
#_daemon = asterisk
# Option:  failregex
# Notes.:  regex to match the password failures messages in the logfile. The
#          host must be matched by a group named "host". The tag "" can
#          be used for standard IP/hostname matching and is only an alias for
#          (?:::f{4,6}:)?(?P\S+)
# Values:  TEXT

#[Jul 14 20:47:04] LOGIN asdf: Authentication Failure to Web Interface login. Invalid user asdf from 192.168.0.100.
#[Nov 10 20:56:01] LOGIN admin: Authentication Failure to Web Interface login. Failed password for admin from 37.176.189.82.
#
failregex = LOGIN .*: Authentication Failure to Web Interface login. Invalid user .* from <HOST>.
            LOGIN .*: Authentication Failure to Web Interface login. Failed password for .* from <HOST>.

ignoreregex =

И добавим правило в jail.conf
[elastix]
enabled = true
filter = elastix-login
action = iptables-multiport[name=NoLoginFailures, port="http,https"]
logpath = /var/log/elastix/audit.log
bantime = 3600
maxretry = 3

Защита SSH с Fail2Ban в CentOS 7

  • Linux
Соединение по SSH к вашему серверу, доступному с интернета часто подвергается атакам. Fail2ban самое популярное средство для защиты от перебора паролей. Сервис сам анализирует неудачные попытки входа и создает правила в iptables, блокирующие доступ злоумышленникам.

Ниже проверенный мануал по установке Fail2ban на сервере CentOS 7.

Читать дальше →

Asterisk GUI

Начал писать свой веб-интерфейс для asterisk, на php + js + html + ajax
Проект opensource. Пока еще на начальной стадии, но уже кое что умеет.
Из того, чего не видел у других — отображение очередей с статусами агентов и с кем они разговаривают (с привязкой к очереди), видно не отвеченные вызовы и нагрузку на очереди. Да, похожее есть в FOP2, но во-первых платно, во-вторых не совсем так.

Ссылка на github.com

Прошу попинать и высказать фидбек или хотелки, может по разработке подскажете что полезное.

Скриншот

Как добавить в очередь внешнего абонента

  • Asterisk
Нашел на форумах, возможно пригодится:

Вы можете добавить в очередь любой канал, в том числе внешний номер:

member => Local/12345@default

Где [default] наш контекст.

И так же можно использовать такую конструкцию:
member => SIP/12345@yourprovider

Команды AMI

  • Asterisk
Список команд AMI asterisk версии 11, вывод команды manager show commands
AbsoluteTimeout: Set absolute timeout.  (Priv: system,call,all)
AgentLogoff: Sets an agent as no longer logged in.  (Priv: agent,all)
Agents: Lists agents and their status.  (Priv: agent,all)
Atxfer: Attended transfer.  (Priv: call,all)
Bridge: Bridge two channels already in the PBX.  (Priv: call,all)
Challenge: Generate Challenge for MD5 Auth.  (Priv: <none>)
ChangeMonitor: Change monitoring filename of a channel.  (Priv: call,all)
Command: Execute Asterisk CLI Command.  (Priv: command,all)
ConfbridgeKick: Kick a Confbridge user.  (Priv: call,all)
ConfbridgeList: List participants in a conference.  (Priv: reporting,all)
ConfbridgeListRooms: List active conferences.  (Priv: reporting,all)
ConfbridgeLock: Lock a Confbridge conference.  (Priv: call,all)
ConfbridgeMute: Mute a Confbridge user.  (Priv: call,all)
ConfbridgeSetSingleVideoSrc: Set a conference user as the single video source distributed to all other participants.  (Priv: call,all)
ConfbridgeStartRecord: Start recording a Confbridge conference.  (Priv: system,all)
ConfbridgeStopRecord: Stop recording a Confbridge conference.  (Priv: call,all)
ConfbridgeUnlock: Unlock a Confbridge conference.  (Priv: call,all)
ConfbridgeUnmute: Unmute a Confbridge user.  (Priv: call,all)
CoreSettings: Show PBX core settings (version etc).  (Priv: system,reporting,all)
CoreShowChannels: List currently active channels.  (Priv: system,reporting,all)
CoreStatus: Show PBX core status variables.  (Priv: system,reporting,all)
CreateConfig: Creates an empty file in the configuration directory.  (Priv: config,all)
DAHDIDialOffhook: Dial over DAHDI channel while offhook.  (Priv: <none>)
DAHDIDNDoff: Toggle DAHDI channel Do Not Disturb status OFF.  (Priv: <none>)
DAHDIDNDon: Toggle DAHDI channel Do Not Disturb status ON.  (Priv: <none>)
DAHDIHangup: Hangup DAHDI Channel.  (Priv: <none>)
DAHDIRestart: Fully Restart DAHDI channels (terminates calls).  (Priv: <none>)
DAHDIShowChannels: Show status of DAHDI channels.  (Priv: <none>)
DAHDITransfer: Transfer DAHDI Channel.  (Priv: <none>)
DataGet: Retrieve the data api tree.  (Priv: <none>)
DBDel: Delete DB entry.  (Priv: system,all)
DBDelTree: Delete DB Tree.  (Priv: system,all)
DBGet: Get DB Entry.  (Priv: system,reporting,all)
DBPut: Put DB entry.  (Priv: system,all)
Events: Control Event Flow.  (Priv: <none>)
ExtensionState: Check Extension Status.  (Priv: call,reporting,all)
Filter: Dynamically add filters for the current manager session.  (Priv: system,all)
GetConfig: Retrieve configuration.  (Priv: system,config,all)
GetConfigJSON: Retrieve configuration (JSON format).  (Priv: system,config,all)
Getvar: Gets a channel variable or function value.  (Priv: call,reporting,all)
Hangup: Hangup channel.  (Priv: system,call,all)
IAXnetstats: Show IAX Netstats.  (Priv: system,reporting,all)
IAXpeerlist: List IAX Peers.  (Priv: system,reporting,all)
IAXpeers: List IAX peers.  (Priv: system,reporting,all)
IAXregistry: Show IAX registrations.  (Priv: system,reporting,all)
ListCategories: List categories in configuration file.  (Priv: config,all)
ListCommands: List available manager commands.  (Priv: <none>)
LocalOptimizeAway: Optimize away a local channel when possible.  (Priv: system,call,all)
Login: Login Manager.  (Priv: <none>)
Logoff: Logoff Manager.  (Priv: <none>)
MailboxCount: Check Mailbox Message Count.  (Priv: call,reporting,all)
MailboxStatus: Check mailbox.  (Priv: call,reporting,all)
MixMonitor: Record a call and mix the audio during the recording.  Use of StopMixMonitor is required to guarantee the audio file is available for processing during dialplan execution.  (Priv: system,all)
MixMonitorMute: Mute / unMute a Mixmonitor recording.  (Priv: system,call,all)
ModuleCheck: Check if module is loaded.  (Priv: system,all)
ModuleLoad: Module management.  (Priv: system,all)
Monitor: Monitor a channel.  (Priv: call,all)
MuteAudio: Mute an audio stream.  (Priv: system,all)
Originate: Originate a call.  (Priv: originate,all)
Park: Park a channel.  (Priv: call,all)
ParkedCalls: List parked calls.  (Priv: <none>)
Parkinglots: Get a list of parking lots  (Priv: <none>)
PauseMonitor: Pause monitoring of a channel.  (Priv: call,all)
Ping: Keepalive command.  (Priv: <none>)
PlayDTMF: Play DTMF signal on a specific channel.  (Priv: call,all)
PresenceState: Check Presence State  (Priv: call,reporting,all)
QueueAdd: Add interface to queue.  (Priv: agent,all)
QueueLog: Adds custom entry in queue_log.  (Priv: agent,all)
QueueMemberRingInUse: Set the ringinuse value for a queue member.  (Priv: agent,all)
QueuePause: Makes a queue member temporarily unavailable.  (Priv: agent,all)
QueuePenalty: Set the penalty for a queue member.  (Priv: agent,all)
QueueReload: Reload a queue, queues, or any sub-section of a queue or queues.  (Priv: <none>)
QueueRemove: Remove interface from queue.  (Priv: agent,all)
QueueReset: Reset queue statistics.  (Priv: <none>)
QueueRule: Queue Rules.  (Priv: <none>)
Queues: Queues.  (Priv: <none>)
QueueStatus: Show queue status.  (Priv: <none>)
QueueSummary: Show queue summary.  (Priv: <none>)
Redirect: Redirect (transfer) a call.  (Priv: call,all)
Reload: Send a reload event.  (Priv: system,config,all)
SendText: Send text message to channel.  (Priv: call,all)
Setvar: Sets a channel variable or function value.  (Priv: call,all)
ShowDialPlan: Show dialplan contexts and extensions  (Priv: config,reporting,all)
SIPnotify: Send a SIP notify.  (Priv: system,all)
SIPpeers: List SIP peers (text format).  (Priv: system,reporting,all)
SIPpeerstatus: Show the status of one or all of the sip peers.  (Priv: system,all)
SIPqualifypeer: Qualify SIP peers.  (Priv: system,reporting,all)
SIPshowpeer: show SIP peer (text format).  (Priv: system,reporting,all)
SIPshowregistry: Show SIP registrations (text format).  (Priv: system,reporting,all)
Status: List channel status.  (Priv: system,call,reporting,all)
StopMixMonitor: Stop recording a call through MixMonitor, and free the recording's file handle.  (Priv: system,call,all)
StopMonitor: Stop monitoring a channel.  (Priv: call,all)
UnpauseMonitor: Unpause monitoring of a channel.  (Priv: call,all)
UpdateConfig: Update basic configuration.  (Priv: config,all)
UserEvent: Send an arbitrary event.  (Priv: user,all)
VoicemailUsersList: List All Voicemail User Information.  (Priv: call,reporting,all)
WaitEvent: Wait for an event to occur.  (Priv: <none>)

Команды CLI Asterisk

  • Asterisk
В этой статье мы расскажем как пользоваться Asterisk CLI (Command Line Interface), или проще говоря командной строкой Asterisk. CLI необходима для дебага ошибок и управления самим Asterisk.

1) Для входа в Asterisk CLI необходимо ввести следующие команды:
# rasterisk

или
# asterisk -rvvvvv

Ключ -rvvvvv отвечает за уровень отображения дебага.

Для выполнения команд из консоли Linux можно воспользоваться следующим синтексом:
asterisk -rx "sip show peers"

В кавычках вы указываете какую команду хотите применить.

Для выхода из консоли необходимо ввести «quit» или «exit».

Приведем список существующих команд Asterisk CLI:

logger show channels - выводит список лог файлов
logger set level {DEBUG|NOTICE|WARNING|ERROR|VERBOSE|DTMF} {on|off} - включение/отключение определенного уровня логирования
logger rotate - ротация и новое открытие файлов логирования
logger remove channel - удаляет канал из логирования
logger reload - перезагружает логирование
logger mute - установка паузы на вывод информации в CLI Asterisk (т.е. в консоль не будет сыпаться никакая информация). Отключается это повторным вводом команды.
logger add channel - добавление нового канала для логирования
local show channels - выводит список локальных каналов АТС (внутренние вызовы)
keys show - выводит список ключей RSA
keys init - установка пароля для ключа RSA
indication show - выводит список индикаторов и стран
indication remove - удаление индикатора страны
indication add - установка индикатора для страны
iax2 unregister - снять регистрацию (принудительно) с IAX2 пира
iax2 test losspct - устанавливает % потерянных пакетов для тестирования работоспособности IAX2
iax2 show users [like] - выводит список пользователей IAX
iax2 show threads - выводит список вспомогательных потоков IAX
iax2 show stats - выводит статистику IAX пиров
iax2 show registry - выводит статус регистраций IAX пиров
iax2 show provisioning - выводит список шаблонов IAX для автонастройки
iax2 show peers - выводит информацию об IAX пирах
iax2 show peer - выводит информацию о IAX пире
iax2 show netstats - выводит сетевую статистику о IAX каналах
iax2 show firmware - выводит список доступных прошивок под IAX пользователей
iax2 show channels - выводит активные каналы IAX
iax2 show callnumber usage - выводит текущие записи в таблице IP
iax2 show cache - выводит кэш диалплана IAX
iax2 set mtu - устанавливает размер MTU IAX сообщений
iax2 set debug trunk {on|off} - включение/отключение дебага IAX каналов
iax2 set debug jb {on|off} - включение/отключение дебага джиттер-буфера IAX
iax2 set debug {on|off|peer} - включение/отключение дебага IAX
iax2 reload - перечитать конфигурационные файлы IAX
iax2 prune realtime - очищает кэш realtime
iax2 provision - производит автонастройку IAX пира
http show status - вывести статус HTTP сервера
group show channels - выводит список активных каналов с указанием групп
file convert - конвертация формата аудиофайла
features show - выводит список настроенных коротких кодов
fax show version - показываем версию факсового модуля
fax show stats - выводит историю передачи факсов
fax show settings - показывать глобальные настройки факсов
fax show sessions - показывает статус всех существующих факсовых сессий
fax show session - показывает статус конкретной факсовой сессии
fax show capabilities - показывает информацию о используемых факсовых модулях
fax set debug {on|off} - включение/отключения дебага факсов
dnsmgr status - показывает статус DNS Manager
dnsmgr reload - перезагружает конфигурацию DNS Manager
dnsmgr refresh - выполняет немедленное обновление DNS
dialplan show - выводит подробный список диалпланов
dialplan show globals - показывает глобальные переменные диалплана
dialplan show chanvar - показывает используемые переменные на канале
dialplan set global - установить глобальную переменную в диалплан
dialplan set extenpatternmatchnew true - использовать новый алгоритм набора номеров
dialplan set extenpatternmatchnew false - использовать старый алгоритм набора номеров
dialplan set chanvar -установить переменную на канал
dialplan save - сохранить диалплан в файл
dialplan remove include - удалить "include" из контекста
dialplan remove ignorepat - удалить указанный черный список из контекста
dialplan remove extension - удалить указанный внутренний номер
dialplan remove context - удалить указанный контекст
dialplan reload - перечитать extensions.conf
dialplan debug - включение дебага диалплана
dialplan add include - включить один контекст в другой контекст
dialplan add ignorepat - добавить новый шаблон в черный список
dialplan add extension - добавление внутреннего номера в контекст
devstate list - выводит список состояний устройств
devstate change -  изменить состояние внутреннего номера (доступные значения: UNKNOWN | NOT_INUSE | INUSE | BUSY | INVALID | UNAVAILABLE | RINGING | RINGINUSE | ONHOLD)
database showkey - выводит данные из БД Asterisk по определенному ключу
database show - выводит данные из БД Asterisk
database query - запустить специальный запрос к astdb
database put - добавить/обновить значение в базе данных
database get - получить из базы данных данные
database deltree - удаление из базы данных дерева ключей/значений
database del - удаление из базы данных ключа/значения
data show providers - выводит доступную для получения, по запросу data get, информацию
data get - запрос на получение данных API
dahdi show version - выводит версию модуля Dahdi
dahdi show status - выводит статус интерфейсных плат Dahdi
dahdi show channel - выводит информацию о конкретном канале
dahdi show channels [group|context] - выводит список активных DAHDI каналов
dahdi show cadences - выводит список каденций
dahdi set swgain {rx|tx} - установить коэффициент усиления звука на канале софтверно
dahdi set hwgain {rx|tx} - установить коэффициент усиления звука на канале хардварно
dahdi set dnd - установить/снять статус DND (Do Not Disturb) на канале
dahdi restart - полный рестарт каналов Dahdi
dahdi destroy channels - разрушить канал Dahdi
dahdi create channels - создать канал Dahdi
core waitfullybooted - ждать полной загрузки Asterisk
core stop when convenient - выключение Asterisk, после того когда закончатся текущие вызовы
core stop now - немедленное выключение Asterisk
core stop gracefully - "теплое" выключение Asterisk
core show warranty - выводит информацию о гарантии на Asterisk
core show version - выводит версию Asterisk
core show uptime [seconds] - выводит информацию о продолжительности работы Asterisk и ОС
core show translation - выводит информацию (матрицу) о перекодировании аудиокодеков
core show threads - выводит информацию о запущенных приложениях Asterisk
core show taskprocessors - выводит информацию о запущенных процессах Asterisk
core show sysinfo - выводит информацию об операционной системе
core show switches - выводит альтернативные маршруты
core show sound - выводит информацию по конкретным звуковым файлам
core show sounds - выводит доступные звуки
core show settings - выводит некоторые настройки ядра Asterisk
core show profile - выводит информацию о профилях
core show license - выводит информацию о версии Asterisk
core show image formats - выводит информацию о поддерживаемых форматах изображений
core show hint - выводит информацию о зарегистрированных кодах (feature code) в Asterisk, по конкретному внутреннему номеру
core show hints - выводит информацию о зарегистрированных кодах (feature code) в Asterisk
core show help - выводит список команд CLI Asterisk
core show hanguphandlers - выводит информацию о разрывах вызовов на конкретном канале
core show hanguphandlers all - выводит информацию о разрывах вызовов на всех каналах
core show function - выводит описание специальных функций диалплана
core show file version [like] - выводит список версий файлов используемых в Asterisk
core show file formats - выводит имена доступных форматов файлов
core show config mappings - выводит информацию о доступных к использованию базах данных
core show codec - выводит информацию о конкретном кодеке
core show codecs - выводит список поддерживаемых аудиокодеков
core show channeltypes - выводит список доступных технологий и протоколов для канала
core show channel - выводит информацию о конкретном канале
core show channels [concise|verbose|count] - выводит информацию о текущих каналах
core show calls [uptime] - выводит информацию о количестве текущих вызовов
core show application - выводит информацию о конкретном приложении диалплана
core show applications [like|describing] - показывает доступные приложения диалплана
core set verbose - установка уровня дебага
core set debug channel - Включение/отключение дебага на канале
core restart when convenient - перезагрузка Asterisk после завершения текущих вызовов
core restart now - немедленная перезагрузка Asterisk
core restart gracefully - мягкий перезапуск Asterisk
core reload - перечитать все конфигурационные файлы
core ping taskprocessor - показывает информацию об отклике приложений Asterisk
core clear profile - чистит информацию о профиле
core abort shutdown - прерывает отключение
config show help - выводит список модулей, которые имеют информацию о настройке
config reload - принудительная перезагрузка модулей с перечиткой конфигурационных файлов
config list - показывает файлы настройки относящиеся к конкретным приложениям Asterisk
confbridge unmute - включить голосовой канал у участников конференции
confbridge unlock - разблокировать конференцию
confbridge show profile users - выводит информацию о доступных профилях пользователей конференций
confbridge show profile user - выводит информацию о конкретном пользовательском профиле конференций
confbridge show profile bridges - выводит информацию о доступных профилях конференций
confbridge show profile bridge - выводит информацию о конкретном профиле конференций
confbridge show menus - показывает доступные меню для разных учетных данных
confbridge show menu - показывает какие команды доступны для управления конференцией
confbridge record stop - остановить запись разговоров в конференции
confbridge record start - начать запись разговоров в конференции
confbridge mute - отключить голосовой канал у участников конференции
confbridge lock - заблокировать конференцию
confbridge list - выводит список существующих конференций и их участников
confbridge kick - удалить участников из конференций
cli show permissions - показывает возможности настройки CLI
cli show aliases - показывает алиасы команд CLI
cli reload permissions - перезагрузка CLI прав пользователей
cli check permissions - показывает какими возможностями для настройки Asterisk обладает пользователь
channel request hangup - запрос завершения вызова на данном канале
channel redirect - перевод вызова в канале
channel originate - инициировать вызов. Пример команды "channel originate SIP/1000 extension 2000@from-internal". После ввода данной команды, Asterisk произведет набор номера 1000 и когда он поднимет трубку, Asterisk наберет номер 2000. Необходимо указывать контекст.
cel show status - выводит статус настроек CEL
cdr submit - запись ожидаемых сообщения в CDR
cdr show status - выводит статус настроек CDR
cdr show active - показывает какие каналы пишутся в CDR
cdr set debug [on|off] - запуск дебага в CDR
cc report status - выводит статус всех Call Completion т.е. функций обратного вызова
cc cancel - снять все Call Completion т.е. функцию обратного вызова, подробнее можно почитать в примере
bridge technology {suspend|unsuspend} - приостановить/возобновить использование технологий установки вызовов (bridge)
bridge technology show - выводит статус возможных технологий установки вызовов
bridge show - выводит информацию о конкретном голосовом канале (bridge)
bridge show all - выводит список всех двухсторонних голосовых каналов (bridgeй)
bridge kick - удалить один из каналов из bridge, т.е. разрушить один голосовой канал
ari show user - выводит информацию по конкретному пользователю ARI
ari show users - выводит список пользователей ARI
ari show status - выводит настройки ARI
ari mkpasswd - шифрование пароля, который используется в ari.conf
aoc set debug - включение дебага для сообщений AOC
agi show commands [topic] - выводит список команд AGI
agi set debug [on|off] - включение/отключение дебага AGI
agi exec - добавить команду AGI в канал Async AGI
agi dump html - показывает список AGI команд в формате HTML
ael set debug {read|tokens|macros|contexts|off} - использование дебага AEL
ael reload - перечитать конфигурационные файлы AEL
acl show - показать используемые ACL (Access Control List)
manager reload - перечитывает конфигурационный файлы, связанные с AMI
manager set debug [on|off] - включение/отключение дебага AMI
manager show command - выводит информацию об определенной команде AMI
manager show commands - выводит список команд AMI
manager show connected - выводит список подключенных пользователей AMI
manager show eventq - выводит список очередей событий
manager show events - выводит список событий AMI
manager show event - выводит информацию о событии AMI
manager show settings - выводит глобальные настройки AMI
manager show users - выводит список настроенных пользователей AMI
manager show user - выводит информацию об указанном пользователе
mfcr2 show version - выводит версию библиотеки OpenR2
mfcr2 show variants - выводит список поддерживаемых вариантов использования каналов MFC/R2
mfcr2 show channels [group|context] - выводит список каналов MFC/R2
mfcr2 set idle - перезагружает канал MFC/R2 и устанавливает его в статус IDLE
mfcr2 set debug - устанавливает канал MFC/R2 в режим дебага
mfcr2 set blocked - перезагружает канал MFC/R2 и устанавливает его в статус BLOCKED
mfcr2 call files [on|off] - включение/отключение MFC/R2 файлов
meetme {mute|unmute} - включает/отключает микрофон для конференций
meetme {lock|unlock} - блокирует/разблокирует конференцию для новых пользователей
meetme list - выводит список активных конференц-комнат
meetme kick - сбросить конференцию или пользователя конференции
mgcp audit endpoint - аудит указанного пира MGCP
mgcp reload - перечитать конфигурационные файлы MGCP
mgcp set debug {on|off} - включение/отключение MGCP дебага
mgcp show endpoints - выводит список MGCP пиров
minivm list accounts - выводит список пользователей, использующих Mini-voicemail
minivm list templates - выводит список шаблонов Mini-voicemail
minivm list zones - выводит список часовых поясов, настроенных в Mini-voicemail
minivm reload - перезагрузка конфигурации Mini-voicemail
minivm show settings - выводит глобальные настройки Mini-voicemail
minivm show stats - выводит статистику Mini-voicemail
mixmonitor {start|stop|list} - выполнить команду MixMonitor
module load - загрузить модуль
module reload - перезагрузить конфигурацию указанного модуля
module show [like] -выводит информацию об указанном модуле
module unload - отключить указанный модуль
moh reload - перезагрузка модуля MusicOnHold
moh show classes - выводит список классов и соответствующих каталогов
moh show files - выводит список звуковых файлов и каталогов, используемых для MusicOnHold
sip show sched - выводит состояние очереди планировщика
sip show registry -выводит список зарегистрированных SIP пиров
sip show peer - выводит информацию об указанном SIP пире
sip show peers - выводит список существующих SIP пиров
sip show objects - выводит список объектов SIP
sip show mwi - выводит список подписок MWI (Message-waiting indicator)
sip show inuse - выводит информацию о статусе пользователей
sip show history - выводит историю запросов SIP по конкретному вызову
sip show domains - выводит список SIP доменов
sip show channel - выводит подробную информацию о SIP канале
sip show channelstats - выводит статистику активных SIP каналов
sip show {channels|subscriptions} - выводит список SIP каналов или подписок
sip set history {on|off} - включение/отключение истории SIP
sip set debug {on|off|ip|peer} - включение/отключение SIP дебага
sip reload - перечитать конфигурационные файлы SIP
sip qualify peer - отправляет пакет OPTIONS в сторону указанного пира
sip prune realtime [peer|all] - удалить кэш базы данных Realtime для пользователя/устройства
sip notify - отправка пакета NOTIFY SIP пользователю
say load [new|old] - перечитать файл say.conf
rtp set debug {on|off|ip} - включение/отключение дебага RTP
rtcp set stats {on|off} - включение/отключение статистики RTCP
rtcp set debug {on|off|ip} - включение/отключение дебага RTCP
realtime update2 - используется для теста переменных RealTime
realtime update - обновляет переменные RealTime
realtime store - создание новой строки в базе RealTime
realtime mysql status - выводит информацию о драйвере MySQL RealTime
realtime mysql cache - выводит кэш таблиц драйвера MySQL RealTime
realtime load - используется для вывода переменных RealTime
realtime destroy - удаляет строку из базы данных RealTime
queue {pause|unpause} member - отключить/подключить пользователя от очереди
queue show rules - выводит настройки из файла queuerules.conf
queue show - выводит информацию об очередях
queue set ringinuse - установка параметра ringinuse для определенной очереди
queue set penalty - установка параметра penalty для определенной очереди
queue reset stats - перезагрузить статистику по очередям
queue remove member - удалить пользователя через из указанной очереди
queue reload {parameters|members|rules|all} - перезагрузить очередь, пользователей, правил обработки вызовов или все сразу
queue add member - добавить пользователя в очередь
pri show version - выводит информацию о версии модуля libpri
pri show span - выводит информацию о конкретной PRI линии
pri show spans - выводит информацию о PRI линиях
pri show debug - выводит информацию о настройках PRI дебага
pri show channels - выводит информацию о канале PRI
pri set debug file - включение дебага PRI и запись его в файл
pri set debug {on|off|hex|intense|0|1|2|3|4|5|6|7|8|9|10|11|12|13|14|15} span - включение дебага PRI
pri service enable channel - включение канала PRI
pri service disable channel - отключение канала PRI
pri destroy span - разрушить канал PRI
presencestate list - выводит список пользовательских состояний присутствия
presencestate change - изменить пользовательский статус состояния присутствия
parking show - выводит информацию о парковочных слотах и конкретном слоте
odbc show - выводит список ODBC DSN
no debug channel - отключение дебага на канале (каналах)
sip show settings - выводит глобальные настройки SIP
sip show tcp - выводит список TCP соединений
sip show users - выводит информацию о SIP пользователях
sip show user- выводит информацию о конкретном SIP пользователе
sip unregister - удаление регистрации SIP пира с АТС
sla show stations - выводит список SLA
sla show trunks - выводит список SLA транков
stun set debug {on|off} - включение/отключение STUN дебага
timing test - запуск проверки синхронизации времени
transcoder show - выводит загрузку транскодинга канала DAHDI
udptl set debug {on|off|ip} - включение/отключение дебага UDPTL
udptl show config - выводит настройки UDPTL
ulimit - выводит или устанавливает ограничение на использование ресурсов процессами
voicemail reload - перечитать конфигурационные файлы VoiceMail
voicemail show users - список пользователей, которые используют голосовую почту
voicemail show zones - выводит список часовых поясов, настроенных в голосовой почте
xmldoc dump - собрать XML файлы в указанный файл

Данный список актуален для версии Asterisk 13.3.2

voipnotes.ru/komandy-cli-asterisk/

Как обновить PHP на CentOS 5 (6) до PHP 5.4 или PHP 5.5

  • Linux
Метод только, что проверил на Centos 5.11, обновил PHP 5.11 до PHP 5.5.
Смотрим какие пакеты PHP установлены:
# yum list installed | grep php

Если что-то есть, удаляем:
# yum remove php.x86_64 php-cli.x86_64 php-common.x86_64 php-gd.x86_64 php-ldap.x86_64 php-mbstring.x86_64 php-mcrypt.x86_64 php-mysql.x86_64 php-pdo.x86_64

Добавьте PHP 5.5 пакеты в yum если у вас CentOS 5.x
# rpm -Uvh http://mirror.webtatic.com/yum/el5/latest.rpm

Для CentOS 6.x:
# rpm -Uvh http://mirror.webtatic.com/yum/el6/latest.rpm

Теперь можно посмотреть какие пакеты доступны (5.4: php54w or 5.5: php55w):
# yum list available | grep php

Если нужна определенная версия:
# yum list available | grep php54

Ставим пакеты PHP 5.4 или 5.5, для примера я ставил php55:
# yum install php55w.x86_64 php55w-cli.x86_64 php55w-common.x86_64 php55w-gd.x86_64 php55w-ldap.x86_64 php55w-mbstring.x86_64 php55w-mcrypt.x86_64 php55w-mysql.x86_64 php55w-pdo.x86_64

Теперь можно посмотреть, какая версия установлена
# php -v
PHP 5.5.38 (cli) (built: Jul 21 2016 13:42:32)
Copyright © 1997-2015 The PHP Group
Zend Engine v2.5.0, Copyright © 1998-2015 Zend Technologies

Перезапустите сервис httpd:
# service httpd restart