По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
Чтобы начать наше знакомство с регулярными выражениями, давайте взглянем на них поближе. Регулярные выражения являются шаблоном, который выполняет сравнение последовательности текста слева направо. Выражние "регулярные выражения" используют не очень часто, чаще всего применяют "regex" либо "regexp". В общем и целом, регулярные выражения предназначены для изменения текста в строке, а также они выполняют проверку некоторых форм, и т.д. К примеру, у вас в разработке ведется некое приложение, и вам понадобилось выявить какие-то правила, по которым юзер уже будет выбирать собственное наименование. Важным условием будет ограничение в количестве символов и написании самого имени, которое должно состоять из букв, цифр, дефиса и нижнего подчеркивания. Для того, чтобы решить данную задачу, можно воспользоваться представленным ниже решением: john_doe; jo-hn_doe; john12_as. Но если наименование юзера будет состоять из прописной буквы, например Jo, то оно никак не будет соответствовать данному условию. Основные совпадения Регулярные выражения являются шаблоном, который состоит из неких символов, с помощью которого разработчики выполняют поиск в тексте. К примеру, условие "The" будет означать букву "t", за которой идет "h", затем - "e". "the" => The fat cat sat onthemat. Метасимволы Строительными блоками регулярных выражений являются метасимволы, которые являются независимыми, и обычно используются любыми способами. Некоторое количество из них могут иметь особое предназначение, поэтому они выделяются квадратными скобками. Ниже вы можете ознакомиться с метасимволами. Метасимволы Описание . Любой единичный символ, исключая новую строку. [ ] Поиск набора символов, помещенных в скобки. [^ ] Отрицательный класс символов. Соответствует любому символу, не заключенному в квадратные скобки. * 0 или больше повторений предшествующего символа. + 1 или больше повторений предшествующего символа. ? Делает предшествующий символ опциональным. {n,m} Возвращает как минимум "n", но не более "m" повторений предшествующего символа. (xyz) Находит группу символа в строго заданном порядке. | Разделяет допустимые варианты. Исключает следующий символ. Позволяет искать служебные символы [ ] ( ) { } . * + ? ^ $ | ^ Находит начало введенной строки. $ Находит конец введенной строки. Сокращения для обозначения символов В регулярных выражениях также существуют некоторые сокращения для символов, что в несколько раз повышает комфортность при работе. Ниже приведен список сокращений: Сокращение Описание . Любой символ, кроме новой строки w Соответствует буквенно-цифровым символам: [a-zA-Z0-9_] W Соответствует не буквенно-цифровым символам: [^w] d Соответствует цифрам: [0-9] D Соответствует нецифровым знакам: [^d] s Соответствует знаку пробела: [ f p{Z}] S Соответствует символам без пробела: [^s] Look Around Позиционная проверка Look Around представляет собой набор некоторых групп, которые предназначены для поиска в тексте, но сами в него не входят. Позиционная проверка используется в том случае, если в определенном условии существует шаблон, который либо предшествует, либо идет следующим. Символ Описание ?= Положительный Lookahead ?! Отрицательный Lookahead ?<= Положительный Lookbehind ? Отрицательный Lookbehind Флаги Флаги также часто называют модификаторами, так как они могут изменять выходные данные регулярного выражения. Флаги ниже являются неотъемлемой частью и могут использоваться в любом порядке или комбинации регулярных выражений. Флаг Описание i Нечувствительность к регистру: делает выражение нечувствительным к регистру. g Глобальный поиск: поиск шаблона во всей строке ввода. m Многострочность: анкер метасимвола работает в каждой строке. Жадные vs. ленивые выражения По умолчанию регулярные выражения выполняются благодаря "жадным" квантификаторам, им соответствует максимально длинная строка из всех возможных. "/(.*at)/" => The fat cat sat on the mat. Чтобы получить "ленивое" выражение, нужно использовать знак "?". Так будет получена максимально короткая строка. "/(.*?at)/" => The fat cat sat on the mat.
img
Графический интерфейс Cisco Unified Communications Manager (CUCM) имеет раздел Disaster Recovery System (DRS), который предназначен для проведения резервного копирования (backup) и восстановления системы (restore). Но бывают ситуации, когда GUI недоступен, например, из-за проблем с сетью. В этом случае, провести процедуры бэкапирования и восстановления можно через консоль CLI и сейчас мы расскажем как это сделать. Процедура бэкапа Перед началом процедуры, у вас должен быть настрое SFTP сервер, куда вы будете заливать бэкап с CUCM. Для начала нужно добавить сервер, куда мы будем загружать бэкап. Для этого вводим команду: utils disaster_recovery device add network [number of backups] Где: backup device name - Имя устройства, куда будем заливать бэкап; path - Путь, куда будем заливать бэкап на данном устройстве; ip-address of remote server - IP адрес удалённого устройства; username - Имя пользователя; number of backups - Количество резервных копий После ввода данной команды, вас попросят ввести пароль пользователя, из под которым вы хотите осуществить бэкап (в нашем случае - ccmadmin) admin: utils disaster_recovery device add network merionbckp ./ 10.20.30.123 ccmadmin Please enter password to connect to network server 10.20.30.123:**** drfCliMsg: Backup Device has been saved successfully. Проверим, что устройство для бэкапа успешно добавилось, для этого введём команду: utils disaster_recovery device list В выводе мы должны увидеть устройство, добавленное ранее: admin:utils disaster_recovery device list Device Name Device Type Device Path -------------------------------------------------------------- merionbckp NETWORK ./ Волшебно! Теперь мы можем осуществить бэкап. Для этого пишем в консоли: utils disaster_recovery backup network Где: backup device name - Имя устройства, куда будем заливать бэкап; featurelist - Список функционала, который нужно забэкапить; Для того, чтобы посмотреть какой функционал доступен для бэкапирования наберите команду: utils disaster_recovery show_registration , где servername - имя сервера, на котором осуществляется бэкап. admin:utils disaster_recovery backup network UCM,CDR_CAR,PLM merionbckp drfCliMsg: Backup initiated successfully. Please run 'utils disaster_recovery status backup' command to see the status Всё, бэкап запущен! Чтобы проверить статус, нам предлагают ввести: utils disaster_recovery status backup admin:utils disaster_recovery status backup Status: SUCCESS :Backup Completed... Tar Filename: 2019-02-16-04-21-37.tar Storage Location: NETWORK Operation: backup Percentage Complete: 100 PLM CCM01 ELM-AGENT SUCCESS Sat Feb 16 04:17:25 CEST 2019 activelog/platform/drf/log/2019-02-16-04-21-37_b_ ccm01_plm_elm-agent.log PLM CCM01 ELM-SERVER SUCCESS Sat Feb 16 04:17:26 CEST 2019 activelog/platform/drf/log/2019-02-16-04-21-37_b_ ccm01_plm_elm-server.log CDR_CAR CCM01 CAR SUCCESS Sat Feb 16 04:17:27 CEST 2019 activelog/platform/drf/log/2019-02-16-04-21-37_b_ ccm01_cdr_car_car.log UCM CCM01 BAT SUCCESS Sat Feb 16 04:19:23 CEST 2019 activelog/platform/drf/log/2019-02-16-04-21-37_b_ ccm01_ucm_bat.log UCM CCM01 CCMPREFS SUCCESS Sat Feb 16 04:19:25 CEST 2019 activelog/platform/drf/log/2019-02-16-04-21-37_b_ ccm01_ucm_ccmprefs.log UCM CCM01 PLATFORM SUCCESS Sat Feb 16 04:19:30 CEST 2019 activelog/platform/drf/log/2019-02-16-04-21-37_b_ ccm01_ucm_platform.log UCM CCM01 TCT SUCCESS Sat Feb 16 04:19:34 CEST 2019 activelog/platform/drf/log/2019-02-16-04-21-37_b_ ccm01_ucm_tct.log UCM CCM01 SYSLOGAGT SUCCESS Sat Feb 16 04:19:35 CEST 2019 activelog/platform/drf/log/2019-02-16-04-21-37_b_ ccm01_ucm_syslogagt.log UCM CCM01 CDPAGT SUCCESS Sat Feb 16 04:19:36 CEST 2019 activelog/platform/drf/log/2019-02-16-04-21-37_b_CCM01_ucm_cdpagt.log UCM CCM01 CLM SUCCESS Sat Feb 16 04:19:37 CEST 2019 activelog/platform/drf/log/2019-02-16-04-21-37_b_ ccm01_ucm_clm.log UCM CCM01 CCMDB SUCCESS Sat Feb 16 04:19:37 CEST 2019 activelog/platform/drf/log/2019-02-16-04-21-37_b_ ccm01_ucm_ccmdb.log UCM CCM01 TFTP SUCCESS Sat Feb 16 04:21:37 CEST 2019 activelog/platform/drf/log/2019-02-16-04-21-37_b_ ccm01_ucm_tftp.log UCM CCM01 ANN SUCCESS Sat Feb 16 04:21:33 CEST 2019 activelog/platform/drf/log/2019-02-16-04-21-37_b_ ccm01_ucm_ann.log UCM CCM01 MOH SUCCESS Sat Feb 16 04:21:34 CEST 2019 activelog/platform/drf/log/2019-02-16-04-21-37_b_ccm01_ucm_moh.log Всё, бэкап готов! Процедура восстановления Чтобы восстановить конфигурацию CUCM из бэкапа, нужно сначала посмотреть – что доступно для восстановления на удалённом сервере? Проверить это можно командой: admin:utils disaster_recovery show_backupfiles merionbckp 2019-02-16-04-21-37 2018-12-25-21-52-19 Выбираем нужный нам бэкап и вводим следующую команду: admin:utils disaster_recovery restore network 10.20.30.123 2019-02-16-04-21-37 merionbckp drfCliMsg: WARNING! There are nodes in current production cluster but NOT present in the backup. These nodes will be removed if you restore the Publisher. If you want to keep these nodes, you will need to manually re-add them after the restore. Do you want DRS to perform a SHA-1 File Integrity Check of your backup archives y/n ?(n) : y Please enter the comma seperated features you wish to restore. Valid features for server CCM01 are PLM,CDR_CAR,UCM:PLM,CDR_CAR,UCM Do you want to restore database from the subscriber y/n ?(n) : n drfCliMsg: Restore initiated successfully. Please run 'utils disaster_recovery status restore' command to see the status ALERT: Please restart the server(s) before performing the next restore for changes to take effect. In case of a cluster, restart the entire cluster. Теперь проверяем статус восстановления: admin:utils disaster_recovery status restore Status: SUCCESS :Restore Completed... Tar Filename: 2019-02-16-04-21-37.tar Storage Location: NETWORK Operation: restore Percentage Complete: 100 CDR_CAR CCM01 CAR SUCCESS Sun Feb 17 11:20:15 CEST 2019 activelog/platform/drf/log/2019-02-16-04-21-37_r_ccm01_cdr_car_car.log PLM CCM01 ELM-AGENT SUCCESS Sun Feb 17 11:24:34 CEST 2019 activelog/platform/drf/log/2019-02-16-04-21-37_r_ccm01_plm_elm-agent.log PLM CCM01 ELM-SERVER SUCCESS Sun Feb 17 11:24:34 CEST 2019 activelog/platform/drf/log/2019-02-16-04-21-37_r_ccm01_plm_elm-server.log UCM CCM01 BAT SUCCESS Sun Feb 17 11:25:06 CEST 2019 activelog/platform/drf/log/2019-02-16-04-21-37_r_ccm01_ucm_bat.log UCM CCM01 CCMPREFS SUCCESS Sun Feb 17 11:37:06 CEST 2019 activelog/platform/drf/log/2019-08-18-15-20-01_r_ccm01_ucm_ccmprefs.log UCM CCM01 PLATFORM SUCCESS Sun Feb 17 11:37:13 CEST 2019 activelog/platform/drf/log/2019-08-18-15-20-01_r_ccm01_ucm_platform.log UCM CCM01 TCT SUCCESS Sun Feb 17 12:11:10 CEST 2019 activelog/platform/drf/log/2019-08-18-15-20-01_r_ccm01_ucm_tct.log UCM CCM01 SYSLOGAGT SUCCESS Sun Feb 17 12:14:19 CEST 2019 activelog/platform/drf/log/2019-02-16-04-21-37_r_ccm01_ucm_syslogagt.log UCM CCM01 CDPAGT SUCCESS Sun Feb 17 12:14:39 CEST 2019 activelog/platform/drf/log/2019-02-16-04-21-37_r_ccm01_ucm_cdpagt.log UCM CCM01 CLM SUCCESS Sun Feb 17 12:17:03 CEST 2019 activelog/platform/drf/log/2019-02-16-04-21-37_r_ccm01_ucm_clm.log UCM CCM01 CCMDB SUCCESS Sun Feb 17 12:17:05 CEST 2019 activelog/platform/drf/log/2019-02-16-04-21-37_r_ccm01_ucm_ccmdb.log UCM CCM01 TFTP SUCCESS Sun Feb 17 12:25:12 CEST 2019 activelog/platform/drf/log/2019-02-16-04-21-37_r_ccm01_ucm_tftp.log UCM CCM01 ANN SUCCESS Sun Feb 17 12:26:38 CEST 2019 activelog/platform/drf/log/2019-02-16-04-21-37_r_ccm01_ucm_ann.log UCM CCM01 MOH SUCCESS Sun Feb 17 12:26:39 CEST 2019 activelog/platform/drf/log/2019-02-16-04-21-37_r_ccm01_ucm_moh.log
img
Привет, дорогой читатель! На этапе траблшутинга системные администраторы прибегают к просмотру и анализу лог – файлов Asterisk. В статье поговорим про причины отбоя вызова (hangupcause) в Asterisk, как их найти в лог – файле и что они означают. Поиск Hangupcause Подключаемся к нашему серверу IP – АТС по SSH. Открываем консоль и вводим следующую команду: [root@asterisk ~]# grep -e '[CALLID].*HANGUPCAUSE' /var/log/asterisk/full Здесь CALLID - это идентификатор вызова. Найти его очень просто. В лог – файле введите номер звонящего/вызываемого абонента и найдете примерно вот такую запись (в примере поиск осуществляется по номеру 89123456789): [2017-02-08 18:58:03] VERBOSE[18823][C-00000009] pbx.c: Executing [recordcheck@sub-record-check:11] Goto("Local/89123456789@from-internal-00000007;2", "startrec") in new stack Находим запись выше. Здесь, [C-00000009] - является идентификатором вызова. После того, как Вы нашли hangupcause, его необходимо понять. Переходим к следующему шагу – интерпретация. Все причины отбоя вызова в Asterisk Ниже, в таблице, мы составили причины отбоя вызова и соответствующие для них коды SIP ответов с небольшим описанием: Код отбоя (hangupcause) Полученный SIP - ответ Описание 1 410 Unallocated (unassigned) - неназначенный номер. Данная ошибка указывает, что вызываемый номер назначения не может быть вызван, по причине отсутствия маршрута до него. Как правило, данную ошибку возвращает провайдер телефонных услуг. Например, при звонка зарубеж, данная ошибка может возвращаться из-за отсутствия маршрута к номеру назначения. 2 500 No route to specified transit network - ошибка индицирует о том, что оборудование, сгенерировавшее данную ошибку получило запрос запрос на маршрутизацию вызова через неизвестную ей транзитную сеть. Вполне возможно, что данная сеть в целом не существует. 3 404 No route to destination - чисто "сетевая" ошибка. Обозначает отсутствие коннективити (маршрутизации) между сетями инициатора вызова и вызываемого абонента. 4 500 Send special information tone - вызываемый абонент не может быть вызван по причинам "долгосрочного характера", и звонящий должен получить специальный звуковой тон. 5 500 Misdialled trunk prefix - сигнализирует о том, что к вызываемому номеру был подставлен ошибочный телефонный префикс. 6 500 Channel unacceptable - проблемы на канале связи. Как правило это сетевая проблема. 7 500 Call awarded and being delivered in an established channel - индикация того, что пользователь получил входящий вызов и что пользователь уже имеет аналогичный вызов 8 500 Prefix 0 dialed but not allowed - префикс в начале номер "0" не разрешен 9 500 Prefix 1 dialed but not allowed - префикс в начале номер "1" не разрешен 10 — Prefix 1 not dialed but required - префикс "1" подставлен в начало номера, но не является требованием 11 — More digits received than allowed, call is proceeding - в вызываемом номере передано больше цифр, чем позволено на оборудовании передающим данный код отбоя 16 BYE Normal call clearing - вызов был закончен естественным образом (кто - то из абонентов положил трубку) 17 486 User busy - индицирует, что вызываемый абонент не может принять вызов, так как находится в состоянии "Занят" (есть активный разговор) 18 480 No user responding - вызываемый абонент не ответил на сообщение о вызове (инициации) в течение определенного времени 19 480 T.301 expired: – User Alerted, No answer from user - аппарат вызываемого абонента звонил, но он не ответил на звонок 21 603 Call rejected - вызов отклонен 22 480 Number changed to number in diagnostic field - индицирует о том, что вызываемый номер более не существует. В сообщение так же может быть включен новый номер вызываемого абонента 23 — Reverse charging rejected - вариант, когда за звонок платит принимающая вызов сторона. Данное сообщение обозначает отклонение такого вызова. 24 — Call suspended - оборудование получило запрос на приостановку вызова 25 — Call resumed - вызов возобновлен (продолжение 24 отбоя) 26 500 Non-selected user clearing - пользователю не был назначен входящий вызов 27 404 Destination out of order - данное сообщение индицирует о том, что телефонная сигнализация не может быть доставлена через выбранный NIC (сетевой интерфейс). В данном случае, проблема скорее всего кроется на L1 или на L2 уровне (физический или канальный) 28 484 Invalid number format or incomplete address - неправильный формат вызываемого номера или номер указан не полностью 29 501 EKTS facility rejected by network - проблема на уровне платы - устройство отклонено на уровне сети 30 500 Response to STATUS ENQUIRY - сообщение ответ на запрос о состоянии 31 404 Normal, unspecified - эта причина отбоя используется в случае, если другие причины (более конкретные) не были применены 33 — Circuit out of order - построенный канал связи вышел из строя 34 503 No circuit/channel available - нет доступного для установления соединения канала связи 35 500 Destination unattainable - нет возможности доставить сообщение до получателя 36 500 Out of order - объект функционирует не корректно 37 500 Degraded service - уведомление о том, что сервис находится в некорректном состоянии 38 503 Network out of order - сетевое соединение функционирует не корректно (вероятная проблема на уровне L3) 39 500 Transit delay range cannot be achieved - требуемый диапазон задержки (время обработки, передачи) не может быть достигнут 40 500 Throughput range cannot be achieved - требуемый диапазон пропускной способности (передача сообщения) не может быть достигнута 41 503 Temporary failure - временная неработоспособность сервиса. "Временная" означает то, что пользователь может попробовать еще раз через некоторое время 42 503 Switching equipment congestion - в настоящее время, оборудование коммутации испытывает пиковые значения нагрузки и не может обработать запрос 43 500 Access information discarded - данная причина индицирует о том, что по запросу сеть (L3) не может доставить информацию о доступе к удаленному пользователю 44 503 Requested circuit channel not available - запрошенный канал связи недоступен 45 500 Preempted - данная причина указывает на то, что вызов был прерван 46 500 Precedence call blocked - означает, что вызываемый пользователь занят вызовов с более высоким приоритетом 47 503 Resource unavailable, unspecified - причина, отправляемая в том случае, если ни одна другая не была отправлена 49 500 Quality of service unavailable - использование QoS требование не доступно 50 500 Requested facility not subscribed - пользователь запросил услугу, которую он не может получить по причине отсутствия доступа к ней 51 — Reverse charging not allowed - вариант, когда за звонок платит принимающая вызов сторона не разрешен для данного пользователя 52 — Outgoing calls barred - исходящий вызов запрещен для абонента 53 500 Outgoing calls barred within CUG - данная причина означает, что несмотря то, что пользователь является членом закрытой группы юзеров (CUG - Closed User Groups) для совершения исходящего вызова, ему данная итерация запрещена 54 — Incoming calls barred - входящий вызов запрещен для абонента 55 603 Incoming calls barred within CUG - данная причина означает, что несмотря то, что пользователь является членом закрытой группы юзеров (CUG - Closed User Groups) для приема входящего вызова, ему данная итерация запрещена 56 — Call waiting not subscribed - пользователь не имеет права (не подписан) на услугу "Ожидание вызова" 57 501 Bearer capability not authorized - пользователь запросил расширение пропускной способности канала до оборудования, но не имеет права на подобные итерации 58 501 Bearer capability not presently available - пользователь запросил расширение пропускной способности канала до оборудования, но в данный момент данная функция не доступна 63 503 Service or option not available, unspecified - сообщение сообщает о недоступности услуги в том случае, если другие причины (более конкретные) не были отправлены пользователю 65 501 Bearer service not implemented - служба передачи (переноса) информации не реализована 66 500 Channel type not implemented - устройство, посылающее данную причину не поддерживает указанный типа канала связи 67 — Transit network selection not implemented - не удалось совершить выбор транзитной сети 68 — Message not implemented - данное сообщение не реализовано 69 500 Requested facility not implemented - эта причина указывает на то, что устройство, отсылающее эту причину не поддерживает запрашиваемые дополнительные услуги 70 500 Only restricted digital information bearer capability is available - данное сообщение указывает на то, что пользователь запросил неограниченный доступ к пропускной способности канала связи, но устройство поддерживает только с ограничениями 79 501 Service or option not implemented, unspecified - услуга или опция не реализована (когда другие причины не были отправлены) 81 500 Invalid call reference value - эта причина указывает на то, что устройство, отсылающее эту причину, получило сообщение с идентификатором вызова, который в настоящее время не используется на интерфейсе сети пользователя 82 500 Identified channel does not exist - эта причина указывает на то, что устройство, отсылающее эту причину, получило запрос на использование канала, который не активизирован на сетевом интерфейсе. Например, если пользователь использует в потоке Е1 (PRI) тайм – слоты с 1 по 12, а запросил использовать с 3 по 24 – будет сгенерирована данная причина 83 500 A suspended call exists, but this call identity does not - вызов существует, но отсутствуют идентификаторы для него 84 500 Call identity in use - оборудование получило запрос на приостановление вызова, содержащий идентификатор вызова, под которым вызов уже значится приостановленным 85 500 No call suspended - получен запрос на возобновление вызова с идентификатором звонка, который не числится в списке приостановленных 86 500 Call having the requested call identity has been cleared - получен запрос на возобновление вызова с идентификатором звонка, который был прерван в результате тайм - аута 87 603 Called user not member of CUG - вызываемый абонент не является членом закрытой группы юзеров (CUG - Closed User Groups) 88 404 Incompatible destination - система получила запрос на установление соединения с параметрами, которые не могут быть обслужены 89 — Non-existent abbreviated address entry - не существующий адрес 90 500 Destination address missing, and direct call not subscribed - адрес назначения не указан, а опция директивного вызова недоступна для пользователя 91 500 Invalid transit network selection (national use) - получен индикатор транзитной сети, который имеет неверный формат (в рамках рекомендации Q.931) 92 — Invalid facility parameter 93 Mandatory information element is missing - обязательный элемент информационного сообщения отсутствует 93 500 Message type non-existent or not implemented - получено устройством сообщение не может быть интерпретировано на оборудовании 95 404 Invalid message, unspecified - неправильное сообщение. Используется только тогда, когда другие (более конкретные сообщения) не были отправлены 96 500 Mandatory information element is missing - в полученном оборудованием сообщение отсутствует важное для его обработки поле 97 500 Message type non-existent or not implemented - тоже самое что и 93 код 98 500 Message not compatible with call state or message type non-existent or not implemented - сообщение не совместимо с текущим состоянием звонка или не может быть интерпретировано оборудованием 99 500 Information element nonexistent or not implemented - информационный элемент не существует или не может быть интерпретирован оборудованием 100 500 Invalid information element contents - элемент не может быть интерпретирован. Помимо этого, одно или более полей сообщения были закодировано алгоритмом, который не поддерживает оборудованием. 101 500 Message not compatible with call state - полученное сообщение не соответствует состоянию вызова 102 408 Recovery on timer expiry - процедура восстановления по причине тайм - аута параллельно с алгоритмами обработки ошибок 103 500 Parameter non-existent or not implemented – passed on - параметр не существует или не реализован на оборудовании 111 404 Protocol error, unspecified - ошибка, которая отправляется в случае, если более детальное сообщение не было отправлено 127 500 Internetworking, unspecified - на этапе установления соединения произошел сбой
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59