Сделала меню для работы с Asterisk, заведения абонентов и пр. из Linux CLI. Не могу как сделать отображение WARNING о проблемах в определенных строках плана нумерации при выполнении из Linux CLI. Например
asterisk -rx "dialplan reload"
в выводе команды отобразит только
Dialplan reloaded.
А хотелось бы отобразить WARNING как в Asterisk CLI, например:
ast16*CLI> dialplan reload
Dialplan reloaded.
[Mar 11 15:59:58] WARNING[8016]: config.c:2020 process_text_line: No '=' (equal sign) in line 15 of /etc/asterisk/extensions.conf
[Mar 11 15:59:58] WARNING[8016]: config.c:2020 process_text_line: No '=' (equal sign) in line 23 of /etc/asterisk/extensions.conf
....
-- pbx_config successfully loaded 54 contexts (enable debug for details).
[Mar 11 15:59:58] WARNING[8016]: pbx.c:8732 ast_context_verify_includes: Context 'local' tries to include nonexistent context 'trunklocal'
Сделала так. Может можно проще:
reload) adate=`LC_ALL=C date +"%b %d %T"` # дата в формате как в логах, временно переключили на английский язык, отобразит Mar 11 16:32:11
echo "Время: $adate"
asterisk -rx "dialplan reload"
sleep 2
tail -n1000 /var/log/asterisk/full | grep WARNING | grep -A1000 "$adate" ;;
Пример до и после применения поиска после текущей даты.
[root@ast16 loki]# sip dialplan reload
Время: Mar 11 16:50:14
Dialplan reloaded.
[Mar 11 16:48:19] WARNING[31395] pjsip/dialplan_functions.c: No transport information for channel PJSIP/orel-000080af
[Mar 11 16:48:19] WARNING[24316][C-00004061] func_channel.c: Unknown or unavailable item requested: 'pjsip,remote_addr'
[Mar 11 16:49:10] WARNING[25340] config.c: No '=' (equal sign) in line 15 of /etc/asterisk/extensions.conf
[Mar 11 16:49:10] WARNING[25340] config.c: No '=' (equal sign) in line 23 of /etc/asterisk/extensions.conf
[Mar 11 16:49:10] WARNING[25340] pbx.c: Context 'local' tries to include nonexistent context 'trunklocal'
[Mar 11 16:50:11] WARNING[21397] pjsip/dialplan_functions.c: No transport information for channel PJSIP/4352-000080bf
[Mar 11 16:50:11] WARNING[26224][C-00004069] func_channel.c: Unknown or unavailable item requested: 'pjsip,remote_addr'
[Mar 11 16:50:14] WARNING[26378] config.c: No '=' (equal sign) in line 15 of /etc/asterisk/extensions.conf
[Mar 11 16:50:14] WARNING[26378] config.c: No '=' (equal sign) in line 23 of /etc/asterisk/extensions.conf
[Mar 11 16:50:14] WARNING[26378] pbx.c: Context 'local' tries to include nonexistent context 'trunklocal'
[root@ast16 loki]# .linfunc
[root@ast16 loki]# sip dialplan reload
Время: Mar 11 16:51:07
Dialplan reloaded.
[Mar 11 16:51:07] WARNING[27271] config.c: No '=' (equal sign) in line 15 of /etc/asterisk/extensions.conf
[Mar 11 16:51:07] WARNING[27271] config.c: No '=' (equal sign) in line 23 of /etc/asterisk/extensions.conf
[Mar 11 16:51:07] WARNING[27271] pbx.c: Context 'local' tries to include nonexistent context 'trunklocal'
Далее я открываю план нумерации на нужной строке:
sip dialplan 15
Как это реализовано в скрипте (мои маленькие функции savefile и testfile сохраняют бэкап плана нумерации перед редактированием и отображают различия в старом и отредактированном плане нумерации):
+([0-9])) savefile
vim /etc/asterisk/extensions.conf +$2 -c 'set number' +star
testfile ;;
Простой вариант - в том же формате делаете варнинг в файл до релоада и через 30 секунд после, в конце узнаете через grep -n где эти строчки в файле и собираете с помощью tail/head все между ними. После чего скипаете все, что не config.c и dialplan.
А вообще "заведения абонентов и пр." должно единобразно работать из базы данных. Генерироваться на основе проверенных шаблонов и логинов-паролей-адресов-темплейтов(астериск,кстати, умеет темплейты много где).
Задан: 2020-03-11 17:01:12 +0400
Просмотрен: 310 раз
Обновлен: Mar 16 '20
Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании
Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией
GNU GPL.
По мне так это неправильный подход и походит на борьбу с ветряными мельницами. Не нужно допускать варнингов и писать конфиг нужно с учетом его синтаксиса. Вы так себе удваиваете работу.
zzuz ( 2020-03-15 16:43:05 +0400 )редактироватьприсоединяюсь. Вы странная девушка. Разбейте конфиг на две части. Одна - сложная логика, другая - просто выставление параметров, return. и все. Скрипт обновляет только вторую. Все равно астериск не будет писать варнинги на полностью некорректные строчки, например, закоментированные или с неправильным префиксом. Ему пофигу
meral ( 2020-03-16 19:59:56 +0400 )редактировать