По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
Всем привет! Сегодня мы поговорим про то, каким образом можно управлять телефонной станцией Cisco Call Manager Express (CME) , подробнее о которой можно прочитать в нашей статье. Сейчас это решение называется Cisco Unified Communications Manager Express (CUCME) . Есть два метода конфигурации CME – при помощи графического интерфейса GUI и при помощи интерфейса командной строки CLI. Поэтому CME исключаетu споры по поводу того, какой вид интерфейса лучше – графический или командной строки, ведь можно использовать какой больше приходится по душе. Конфигурация при помощи командной строки по-прежнему остается наиболее гибкой и поддерживает все функции CME, однако утилиты на основе графического интерфейса, в частности, Cisco Configuration Professional (CCP) , развились достаточно для поддержки простой конфигурации и устранения неполадок для подавляющего большинства функций CME. Для траблшутинга удобно использовать командную строку, где представлены команды show или debug, которые можно использовать для проверки или поиска неполадок маршрутизатора CME. CLI Для доступа к интерфейсу командной строки можно использовать один из трех способов: Консольный порт (console) – подключиться при помощи serial интерфейса на компьютере и кабеля rollover; Telnet – издавна использовался для управления различными системами командной строки. В настоящее время Telnet считается небезопасным протоколом, потому что он передает данные в виде чистого текста; SSH - Secure Shell (SSH) выполняет ту же функцию, что и Telnet, но обеспечивает связь с большой дозой шифрования; Стоит напомнить, что для работы с CLI используются команды IOS, про которые можно почитать тут, тут и тут. Чтобы поддерживать большинство VoIP функций Cisco создали специальный режим telephony-service. Попасть в него можно из глобального режима конфигурации CME#conf t CME(config)# telephony-service CME(config-telephony)# Как мы уже говорили большинство команд для траблшутинга выполняются из CLI. Одна из наиболее используемых команд – show ephone registered, которая показывает телефоны, зарегистрированные на CME и состояние их линий. GUI В качестве графического интерфейса используются два основных инструмента: интегрированный графический интерфейс CME (CME Integrated GUI) и Cisco Configuration Professional (CCP) . Интегрированный графический интерфейс CME работает под управлением HTML и JAR (Java) файлов, которые загружены во flash память маршрутизатора CME. Как правило, маршрутизаторы CME поставляется с этими файлами, однако также можно загрузить пакет TAR с веб-сайта Cisco, и извлечь его во flash память. При помощи минимальной конфигурации командной строки (назначение IP-адреса и включение HTTP-сервера), можно быстро включить интегрированный графический интерфейс CME. Хотя интегрированный графический интерфейс CME может показаться не красивым по сегодняшним стандартам, он имеет функционал, который позволяет обрабатывать большинство основных функций CME: добавление и изменение конфигурации телефона, изменение набора номера, настройка групп и т.д. Встроенный интерфейс CME сфокусирован в основном для настройки аспектов телефонии. Для расширенной настройки маршрутизаторов CME используется Cisco Configuration Professional (CCP) . С его помощью можно настроить маршрутизатор, фаерволл, систему предотвращения вторжений (IPS), VPN, функции Unified Communications и общие функции WAN и LAN. CCP можно скачать с сайта Cisco и установить на локальном компьютере. По умолчанию CCP пытается подключиться к маршрутизатору с использованием Telnet и HTTP, которые оба clear-text протоколы. Конечно, безопасные соединения всегда лучше. Поэтому можно изменить настройки и выбрать опцию «Connect securely» , после чего CCP будет использовать SSH и HTTPS для подключения и настройки маршрутизатора CME. После подключения к маршрутизатору CME CCP запускает процесс обнаружения, который идентифицирует устройтво, программное обеспечение, интерфейсы и модули. По завершении этого процесса можно начинать настройку. Также у Cisco есть утилита Cisco Configuration Professional Express (CCP Express) , которая является аналогичной утилитой GUI, загружаемой во flash память маршрутизатора. CCP Express фокусируется только на настройке базовых соединений LAN и WAN, NAT и фаервола. С ее помощью нельзя настроить функции Unified Communications.
img
Цель данной статьи, чтобы разобраться с тем как поправить незначительные ошибки, возникающие в файловых системах. Файловых систем много, поэтому много различных инструментов для работы с ними. Поэтому будет рассказано об основных инструментах к основным стандартным системам Linux. И рассмотрим несколько инструментов к рекомендованным LPIC файловым системам. Рассмотрим, так же журналируемые файловые системы и посмотрим индексные дескрипторы. Проверка целостности файловой системы; Проверка свободного пространства и индексных дескрипторов в файловой системе; Исправление проблем файловой системы. Список утилит: df, du, fsck, debugfs – общие утилиты для всех Linux систем mke2fs, e2fsck, dumpe2fs, tune2fs – утилиты для файловой системы ext xfs_check, xfs_repair, xfs_info, xfs_metadump – утилиты для файловой системы xfs Совершенно понятно, что для других файловых систем есть свои утилиты для работы с данными файловыми сиcтемами. Первая утилита df: man df Данная утилита показывает использование дискового пространства. У данной утилиты достаточно много ключей. Её особенностью является то, что она показывает дисковое пространство в 1 кбайт блоках. Данные цифры не очень понятны и удобны, для того чтобы было удобно можно использовать ключ –h и тогда вид станет удобно читаемым. В выводе команды мы сразу видим размер, сколько использовано, процент использование и точка монтирования. Как мы видим на новом перемонтированном разделе /dev/sdc1 занят 1% дискового пространства. Если посмотреть в папку монтирования раздела, то мы увидим там папку lost+found. Данная папка пуста, но занимает 37 МБ. Есть такое понятие индексные дескрипторы в журналируемых файловых системах inode. Inode – это метка идентификатора файла или по другому индексный дескриптор. В этих индексных дескрипторах хранится информация о владельце, типе файла, уровне доступа к нему. И нужно понимать, что для каждого файла создается свой отдельный inode. Команда df –I может показать нам inode. Число, например, inode напротив /dev/sda2 показывает сколько inode всего может быть на устройстве, далее сколько используется и сколько свободно. Обычно под inode отдается примерно 1% жесткого диска. И получается, что больше чем число inode на устройстве файлов и папок быть не может. Количество inode зависит от типа файловой системы. Далее мы рассмотрим, как пользоваться inode. Следующая команда du man du Данная команда показывает, что и сколько занимает у нас места на жестком диске, а именно размер папок в текущей директории. Если посмотреть вывод данной команды без ключей, то мы увидим список папок в текущей директории и количество блоков, с которым очень неудобно работать. Чтобы перевести данные блоки в человеческий вид, то необходимо дать ключ –h. А для еще большего удобства, можно установить замечательную утилиту ncdu простой командой. sudo apt install ncdu –y После установки нужно запустить ncdu. И мы увидим очень красивую картинку. Но вернемся к стандартной утилите du. С помощью данной утилиты мы можем указать в какой папке необходим просмотр папок и вывод их размера. du –h /home К сожалению данная утилита умеет взвешивать вес только каталогов и не показывает размер файлов. Для того, чтобы посмотреть размер файлов, мы конечно же можем воспользоваться командой ls –l. А также если мы запустим данную команду с ключем –i мы увидим номера inode файлов. Как вы видите у каждой папки и у каждого файла есть свой индексный дескриптор. Далее команды, которые нам позволят проверить целостность файловой системы. Команда fsck man fsck Как написано в описании утилиты она позволяет проверять и чинить Linux файловую систему. Мы можем видеть, например, в oперационной системе Windows, что в случае некорректного завершения работы операционной системы, операционная система запускает утилиту проверки целостности checkdisk. В случае необходимости данная утилита исправляет найденные ошибки в файловой системе. Следовательно, в Linux данные операции выполняет утилита fsck, причем может работать с различными файловыми системами Linux операционных систем. Мы можем попробовать воспользоваться утилитой fsck /dev/sdc1. В ответ от операционной системы мы получим следующее: Как мы видим операционная система вернула в ответ на команду для работы с данным разделом, что данный раздел с монтирован и операция прервана. Аналогичную ситуацию мы будем наблюдать в операционной системе Windows, если мы будем пытаться рабочий раздел проверить на ошибки. Т.е возникнет следующая ситуация. Если мы будем проверять дополнительный логический диск, где не установлена операционная система Windows, то данный раздел на время проведения тестов будет отключен и будут идти проверки. А если мы попытаемся проверить основной раздел, куда установлена операционная система Windows, то операционная система не сможет запустить данную утилиту и попросит перезагрузиться для запуска данной утилиты. В нашем случае придется делать точно так же. Поэтому, чтобы проверить необходимо отключить (от монтировать раздел) и после уже этого запускать утилиту. Из вывода можно заметить утилита пыталась запустить другую утилиту e2fsck, которая в данном случае отвечает за проверку файловых систем extext2ext3ext4. О чем достаточно подробно написано в описании данной утилиты. По сути fsck запускает утилиту ту, которая идет в пакете утилит для конкретной файловой системы. Бывает такое, что fsck не может определить тип файловой системы. Для того, чтобы утилита все-таки проверила файловую систему, необходимо отмонтировать логический раздел. Воспользуемся командой umount /mnt. И запускаем непосредственно саму проверку fsck –t ext4 /dev/sdc1 Проходит проверка моментально. Команда fsck запустилась и запустила необходимую утилиту для файловой системы. По результатам проверки файловая система чистая, найдено 11 файлов и 66753 блока. При обнаружении проблем, утилита предложила нам исправить. Для того, чтобы посмотреть на проверку другой файловой системы, необходимо переформатировать раздел. mkfs –t xfs –f /dev/sdc1 При попытке запуска проверки без указания типа файловой системы fsck /dev/sdc1 Как мы видим, утилита fsck отказалась проверять или вызывать утилиту, а явно указала на ту которую необходимо использовать в данном случае. Для проверки используем xfs_ncheck /dev/sdc1. А для починки файловой системы xfs_repair /dev/sdc1. Перемонтируем обратно наш раздел mount /dev/sdc1 /mnt Теперь можно получить информацию по разделу xfs_info /dev/sdc1 Или сделать дамп файловой системы xfs_metadump /dev/sdc1 dump.db Переформатируем файловую систему ext4 на разделе обратно /dev/sdc1. Перемонтируем в папку mnt. Создадим текстовый файл с текстом на данном разделе nano /mnt/test.txt Далее мы можем посмотреть следующую утилиту man debugfs. Данная утилита умеет очень многое: очень много ключей и различных опций. Чистит, удаляет, чинит, работает с inodes. Зайти в данную утилиту можно debugfs –w /dev/sdc1. Набираем help и видим кучу опций. Можно попросить данную утилиту вывести содержимое нашего тома. ls В результате данной команды мы увидим 2 объекта с номерами их inode. Теперь мы можем сказать rm test.txt и файл будет удален, точнее не сам файл а его индексный дескриптор., если посмотреть опять с помощью команды ls. То будет видно, что количество объектов не изменилось. Следовательно, мы этот файл в журналируемых файловых системах можем восстановить, восстановив его индексный дескриптор. Но только до тех пор, пока на место удаленного файла не был записан другой. Именно поэтому если требуется восстановление информации на диске, рекомендуется немедленно отключить ПК и после этого отдельно подключать носитель информации для процедуры восстановления. Так же на данном принципе основано сокрытие информации в Информационной безопасности, когда на носитель информации в 2 или 3 прохода записываются псевдослучайные данные. Для восстановления данных мы можем использовать команду lsdel. Данная команда показывает удаленные файлы. В принципе на данном debugfs и основаны многие программы для восстановления данных. На скриншоте хорошо видно, что был удален 1 inode с номером 12 дата и время, другие параметры. Для выхода используем q. Для восcтановления используем undel test.txt, команда, номер индексного дескриптора и имя файла с которым оно восстановится. Убедиться, что файл на месте можно с помощью команды ls. Утилита debagfs помогает восстанавливать файлы и вообще работать с файловой системой на низком уровне. Конечно восстанавливать по 1 файлу, это очень трудозатратно. Поэтому вот эти низкоуровневые утилиты используют более современные программы. Еще одна утилита dumpe2fs. Можно вызвать справку по данной утилите man dumpe2fs Данная команда делает дамп информации, которая хранится на данных томах. Выполним данную команду для /dev/sdc1 Мы получим следующий вывод информации. Данный вывод был сделан на стандартный вывод – т.е экран. Сделаем вывод в файл, например: dumpe2fs /dev/sdc1 > /tmp/output.txt Мы можем просмотреть информацию в выведенную в файл поэкранно с помощью less /tmp/output.txt В выводе мы сможем увидеть основные опции данной файловой системы. Переделаем файловую систему, текущую ext4 в ext2. Это можно сделать 3-мя способами с помощью утилит: mkfs, mke2fs, mkfs.ext2. Перед переформатирование необходимо отмонтировать файловую систему. После форматирования и перемонтируем. Опять снимаем дамп и передаем по конвееру на команду grep чтобы посмотреть features. Получаем следующее: dumpe2fs /dev/sdc1 | grep features И видим, что файловые системы отличаются, более новая файловая система имеет фишку журналирования has_jounal. Данная опция так же присутствует в ext3. Т.е в данных файловых системах имеются журналы с помощью которых удобно восстанавливать. Есть интересная утилита tune2fs – настраивать файловую систему. man tune2fs Данная утилита, как следует из описания настраивает настраиваемые параметры файловых систем. Например, у нас есть не журналируемая файловая система ext2. Мы даем команду tune2fs –O has_journal /dev/sdc1. Данная утилита добавляет опцию ведения журнала к файловой системе ext2. Или можем наоборот сказать удалить опцию поставив значок ^.
img
Сегодня хотим рассказать про любопытный сценарий, которой наверняка может быть полезен в сфере E-commerce. Речь пойдет про автоматизацию клиентского обслуживания, а именно: /p> Клиент звонит в интернет – магазин и ему предлагают ввести номер заказа; Введенные абонентом значения по DTMF передаются в AGI скрипт; По номеру заказа, мы формируем SQL – запрос к базе данных, где храним информацию о заказах. Из соответствующей таблицы мы получаем статус заказа и имя клиента; Мы формируем строку, которую необходимо озвучить клиенту и отправляем ее на аудио-генерацию в сторону API Yandex.SpeechKit (TTS технология – text to speech); Получаем аудио файл от Yandex, декодируем его в нужный нам формат (.wav, 8k) и воспроизводим клиенту; Удаляем воспроизведенный файл и завершаем звонок клиента; На наш взгляд это любопытная автоматизация. Приступаем к настройке? :) Получение API - токена Yandex.SpeechKit Для знакомства с технологией Яндекс предоставляет бесплатный тестовый период в 1 месяц с момента отправки первого запроса. После этого, чтобы продолжить использование Yandex. SpeechKit Cloud нужно заключить договор. Подробности условия использования можно прочитать здесь. Первым делом перейдите в кабинет разработчика по ссылке https://developer.tech.yandex.ru и нажмите Получить ключ: Имя ключа - введите имя для ключа. Например, Asterisk + TTS; Подключение - выберите из списка SpeechKit Cloud; Запоминаем значение, которое выделено красным на скриншоте выше – это и есть ваш токен. Переходим к настройке AGI – скрипта. Создаем таблицу с заказами Создадим SQL – таблицу, в которой будем хранить данные о заказах. В лабораторных целях, мы развернем ее на том же хосте, что и IP – АТС Asterisk (+ это снизит задержку и процессинг по времени). Итак, вводим следующие команды в консоли сервера (предварительно подключитесь по SSH): use asteriskcdrdb; CREATE TABLE zakazy(name varchar(20),phone varchar(20),nomerzakaza varchar(20),status varchar(20)); INSERT INTO zakazy (name, phone, nomerzakaza, status) VALUES ("Александр", "79257777777", 300388, "Отправлен"); INSERT INTO zakazy (name, phone, nomerzakaza, status) VALUES ("Иван", "79251111111", 476656, "Оплачен"); INSERT INTO zakazy (name, phone, nomerzakaza, status) VALUES ("Сергей", "79252222222", 0089822, "Доставлен"); Мы создали и наполнили таблицу. Теперь необходимо создать пользователя, который сможет иметь SELECT – доступ к таблице: CREATE USER 'логин_mysql'@'localhost' IDENTIFIED BY 'пароль_mysql'; GRANT SELECT ON asteriskcdrdb.zakazy TO 'логин_mysql'; Запомните ваш логин и пароль и переходите к следующему шагу – адаптации скрипта AGI. Традиционно, комментарии к коду после двойного слеша //: AGI - скрипт Ниже представлена структура скрипта: #!/usr/bin/php -q <?php error_reporting(0); require('phpagi.php'); $agi = new AGI(); $result = $agi->get_data('custom/generate', 6000, 10); //принимаем DTMF от клиента; $number= $result['result']; //записываем в переменную введенный клиентом номер заказа; $hostname = "localhost"; // у нас localhost. У вас может быть IP адрес сервера, на котором хранится БД с заказами (настройте предварительно pg_hba.conf на удаленном хосте); $username = "логин_mysql"; // логин, который вы создали этапом ранее; $password = "пароль_mysql"; // пароль, который вы создали этапом ранее; $dbName = "asteriskcdrdb"; mysql_connect($hostname,$username,$password) OR DIE("Не могу создать соединение "); mysql_select_db($dbName) or die(mysql_error()); $query = "SELECT * FROM zakazy WHERE `nomerzakaza`='$number';"; // подключаемся и парсим данные по номеру заказа; $res=mysql_query($query) or die(mysql_error()); while ($row = mysql_fetch_assoc($res)) { $status = $row['status']; $name = $row['name']; // имя и статус, полученные из SQL пишем в переменные; }; $str = 'Дорогой '.$name.'! Статус вашего заказа '.$status.' Спасибо за обращение, всего доброго!'; // формируем строку, которую необходимо синтезировать; $qs = http_build_query(array("format" => "wav","lang" => "ru-RU","speaker" => "jane","key" => "ваш_токен","emotion" => "good", "text" => $str)); //описываем переменные, которые будем отправлять в сторону API Яндекса. Вы можете регулировать формат файла, локаль, спикера (мужской или женский голоса) и эмоциональный окрас. Заменить "ваш_токен" на ключ, полученный от API Yandex. SpeechKit Cloud; $ctx = stream_context_create(array("http"=>array("method"=>"GET","header"=>"Referer: "))); $soundfile = file_get_contents("https://tts.voicetech.yandex.net/generate?".$qs, false, $ctx); $file = fopen("file1.wav", "w"); fwrite($file, $soundfile); fclose($file); // получаем аудио файл (сохраняем его как file1.wav); shell_exec('sox -t raw -r 48k -e signed-integer -b 16 -c 1 file1.wav -t wav -r 8k -c 1 /var/lib/asterisk/sounds/ru/custom/output1.wav'); // выполняем преобразование аудио в нужный для Asterisk аудио-формат и копируем его в директорию /var/lib/asterisk/sounds/ru/custom/; shell_exec('chown asterisk:asterisk /var/lib/asterisk/sounds/ru/custom/output1.wav'); shell_exec('chmod 775 /var/lib/asterisk/sounds/ru/custom/output1.wav'); // даем файлу нужные пермишны; $agi->exec('Playback',"custom/output1"); // передаем в AGI команду проиграть полученный аудио – файл; shell_exec('rm -f /var/lib/asterisk/sounds/ru/custom/output1.wav'); shell_exec('rm -f file1.wav'); // удаляем оба файла; Скачать скрипт AGI После загрузки файла, сохраните его с расширением .php Сохраните скрипт под именем tts.php в директории /var/lib/asterisk/agi-bin и дайте следующие команды в консоль сервера: dos2unix /var/lib/asterisk/agi-bin/tts.php chown asterisk:asterisk /var/lib/asterisk/agi-bin/tts.php chmod 775 /var/lib/asterisk/agi-bin/tts.php Адаптируем функционал в «продакшн» Итак, первым делом, открываем файл /etc/asterisk/extensions_custom.conf для редактирования и добавляем в него следующую запись: [tts_menu] exten => s,1,Answer() exten => s,2,AGI(tts.php) Очень хорошо. Сделаем вызов кастомного контекста из FreePBX. Для этого воспользуемся модулем Custom Destinations. Переходим по пути Admin → Custom Destinations и нажимаем Add Destination: Нажимаем Submit и Apply Config. Мы хотим чтобы из главного IVR – меню клиент при нажатии 4 мог бы узнать статус своего заказа. Переходим в главный IVR и в секции IVR Entries добавляем следующее: Готово. Если что – либо не получилось, напишите нам в комментариях, постараемся помочь :)
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59