По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
Допустим нам нужно отправить почтой посылку куда-то в Лондон. Что мы делаем? Идем в почту, берём специальный бланк и заполняем соответствующие поля. Отправитель Вася Пупкин, адрес: ул. Тверская, дом 40, кв. 36., Москва, Россия. Кому: Шерлок Холмс, Baker Street 221B, London, United Kingdom. То есть мы отправили посылку конкретному лицу, проживающему по конкретному адресу. Как и в реальном мире, в мире информационных технологий тоже есть своя адресация. В данном случае получателем выступает компьютер, за которым закреплён соответствующий IP адрес. IP aдрес это уникальный идентификатор устройства, подключённого к локальной сети или интернету. p> Видео про IP - адрес На данный момент существуют две версии IP адресов: IP версии 4 (IPv4) и IP версии 6 (IPv6). Смысл создания новой версии заключается в том, что IP адреса в 4-ой версии уже исчерпаны. А новые устройства в сети появляются с огромной скоростью и им всем нужно выделать свой уникальный адрес. IPv4 представляет собой 32-битное двоичное число. Удобной формой записи IP-адреса (IPv4) является запись в виде четырёх десятичных чисел (от 0 до 255), разделённых точками, например, 192.168.0.1. Но так как компьютеры понимают только двоичную систему исчисления, то указанный адрес преобразуют в двоичную форму - 11000000 10101000 00000000 00000000. Длина же IPv6 адресов равна 128-битам. IPv6 адрес представляется в виде строки шестнадцатеричных цифр, разделенной двоеточиями на восемь групп, по 4 шестнадцатеричных цифрр в каждой. Например: 2003:00af:café:3daf:1000:edaf:1001:afad. Каждая группа равна 16 битам в двоичном представлении. IP адреса принято делить на публичные и приватные. Публичный адрес это адрес, который виден в Интернете. Все сайты в глобальной сети имеют публичный или "белый" IP адрес. Для merionet.ru он равен 212.193.249.136. Да и ваш компьютер тоже имеет публичный адрес, который можете просмотреть либо на роутере, либо на специальных сайтах, например 2ip.ru. Но в вашем случае под одним IP адресом в Интернет могут выходить 10, 50, 100 пользователей из вашей же сети. Потому что на самом деле это адрес не конкретного компьютера в сети, а маршрутизатора, через который вы выходите в сеть. Публичные адреса должны быть уникальны в пределах всего Интернета. Приватные же адреса это такой тип адресов, которые используют в пределах одной локальной сети и не маршрутизируются в Интернет. Существуют следующие диапазоны приватных IP адресов: 10.0.0.0-10.255.255.255, 172.16.0.0-172.31.255.255, 192.168.0.0-192.168.255.255. Посмотреть свой локальный приватный адрес можете либо в свойствах сетевого адаптера, либо в командной строке набрав команду ipconfig. В начале зарождения Интернета IP адреса было принято делить на классы: Класс Начальный IP Конечный IP Число сетей Число хостов Класс A 0.0.0.0 127.255.255.255 126 16777214 Класс B 128.0.0.0 191.255.255.255 16382 65536 Класс C 192.0.0.0 223.255.255.255 2097150 254 Класс D 224.0.0.0 239.255.255.255 Класс E 240.0.0.0 254.255.255.255 При этом адрес 0.0.0.0 зарезервирован, он назначается хосту, когда он только что подключен к сети и не имеет IP адреса. Если в сети имеется DHCP сервер, то хост в качестве адреса источника отправляет адрес 0.0.0.0. Адрес 255.255.255.255 это широковещательный адрес. А адреса начинающиеся на 127 зарезервированы для так называемой loopback адресации. Адреса класса D зарезервированы для мультикаст соединений, адреса класса E для исследований (не только крысы страдают от исследований). IP адрес хоста имеет две части адрес сети и адрес узла. Где адрес сети, а где адрес узла - определяется маской сети. Маска сети это 32-битное число, где подряд идущие биты всегда равны 1. На самом деле каждое десятичное число IP адреса - это не что иное, как сумма степеней числа 2. Например, 192 это 1100000. Чтобы получить это значение переводим десятичное число в двоичное. Хотя это азы информатики, но подойдет любой калькулятор, даже встроенный в Windows: А теперь посмотрим как мы получаем 192 из суммы степеней двойки: 1 * 27+1*26+0*25+0*24+0*23+0*27+0*21+0*20 = 1*27+1*26 = 128 + 64 = 192. И так каждый октет может включать в себя следующие числа: 128 64 32 16 8 4 2 1. Если в IP адресе есть место одной из указанных чисел, то в двоичном представлении на месте этого числа подставляется 1, если нет 0. В маске сети все подряд идущие биты должны быть равны 1. Первый октет Второй октет Третий октет Четвёртый октет 255 255 255 0 11111111 11111111 11111111 00000000 Принадлежность адреса классу определяется по первым битам. Для сетей класса A первый бит всегда равен 0, для класса B 10, для класса С 110. При классовой адресации за каждым классом закреплена своя маска подсети. Для класса А это 255.0.0.0, класса B 255.255.0.0, а для класса C 255.255.255.0. Но со временем стало ясно, что классовая адресация не оптимально использует существующие адреса. Поэтому перешли на бесклассовую адресацию, так называемую Classless Inter-Domain Routing (CIDR), где любой подсети можно задать любую маску. Отличную от стандартной. При это, маску подсети можно увеличивать, но никак не уменьшать. Наверное не раз встречали адреса типа 10.10.121.25 255.255.255.0. Этот адрес по сути является адресом класса А, но маска относится к классу C. Но даже в случае бесклассовой адресации наблюдается перерасход IP адресов. В маленьких сетях, где всего один отдел с 40-50 компьютерами это не очень заметно. Но в больших сетях, где нужно каждому отделу выделить свой диапазон IP адресов этот вопрос стоит боком. Например, бухгалтерии вы выделили сеть с адресом 192.168.1.0/24, а там всего 25 хостов. В указанной сети же 254 адресов. Значит 229 адреса остаются не используемыми. На самом деле здесь 256 адресов, но первый 192.168.1.0 является адресом сети, а последний 192.168.1.255 широковещательнымадресом. Итого в распоряжении администратора всего 254 адреса. Существует формула расчета количества хостов в указанной сети. Выглядит она следующим образом: H=2n 2 Где H число хостов, n число бит отведенных под номер хоста. Например, 192.168.1.0 маска 255.255.255.0. Здесь первый 24 бит определяют номер сети, а оставшиеся 8 бит номер хоста. Исходя из этого, H=28-2 = 254. Тут и вспоминаем про деление сетей на подсети. Кроме экономии адресного пространства, сабнеттинг дает еще и дополнительную безопасность. Трафик между сетями с разной маской не ходит, а значит пользователи одной подсети не смогут прослушать трафик пользователей в другой. Это еще и упрощает управление разрешениями в сети, так как можно назначать списки доступа и тем самым ограничивать доступ пользователей в критически важные сегменты сети. С другой стороны, сегментирование сети позволяет увеличивать количество широковещательных доменов, уменьшая при этом сам широковещательный трафик. В сегментировании сети используется такой подход как маска подсети с переменной длиной VLSM (Variable Length Subnet Mask). Суть состоит в том, что вам выделяют диапазон IP адресов, и вы должны распределить их так, чтобы никто не мог проснифить трафик другого и всем досталось хотя бы по одному адресу. Выделением блоков IP адресов занимается организация IANA (Internet Assigned Numbers Authority ). Она делегирует права региональным регистраторам, которые в свою очередь выделяют блоки адресов национальным. Например, региональным регистратором для Европы является RIPE. А последние в свою очередь делят адреса, имеющиеся у них, между провайдерами. Например, нам выделили адрес 192.168.25.0 с маской подсети 255.255.255.0. Маску подсети можно указывать сокращенно: 192.168.25.0/24. 24 это число единиц в маске. Нам как администраторам предприятия предстоит разделить их между четырьмя отделами, в которых по 50 хостов. Начинаем вычисления. Нам нужно 5 * 50 = 250 уникальных адресов. Но основная задача, пользователи должны быть в разных подсетях. Значит необходимо четыре подсети. Для определения количества подсетей в сети есть специальная формула: N = 2n Где N число подсетей, а n число бит заимствованных из хостовой части IP адреса. В нашем случае мы пока не позаимствовали ничего значить подсеть всего одна: 20 = 1. Нам же нужно четыре подсети. Простая математика нам подсказывает, что должны позаимствовать минимум 2 бита: 22 = 4. Итак, маска у нас становиться 255.255.255.192 или /26. Остальные 6 битов нам дают количество адресов равных 64 для каждой подсети, из которых доступны 62 адреса, что полностью покрывает нужду наших подсетей: Сеть № Число хостов Маска подсети Первый IP Последний IP Номер подсети Широковещательный адрес Сеть 1 50 255.255.255.192 192.168.25.1 192.168.25.62 192.168.25.0 192.168.25.63 Сеть 2 50 255.255.255.192 192.168.25.65 192.168.25.126 192.168.25.64 192.168.25.127 Сеть 3 50 255.255.255.192 192.168.25.129 192.168.25.190 192.168.25.128 192.168.25.191 Сеть 4 50 255.255.255.192 192.168.25.193 192.168.25.254 192.168.25.192 192.168.25.255 Тестировать будем в виртуальной среде Cisco Packet Tracer. Как видно из рисунка, здесь три разных хоста маски у всех одинаковые, но маршруты по умолчанию разные. По умолчанию, трафик между всеми этими подсетями идет, так как у нас в сети существует маршрутизатор, который занимается передачей трафика из одной подсети в другую. Чтобы ограничить трафик нужно прописать соответствующие списки доступа Access Lists. Но мы не будем заниматься этим сейчас, так как тема статьи совсем другая. Чтобы определить к какой подсети относится хост, устройство выполняет операцию побитового "И" между адресом узла и маской подсети. Побитовое "И" это бинарная операция, действие которой эквивалентно применению логического "И" к каждой паре битов, которые стоят на одинаковых позициях в двоичных представлениях операндов. Другими словами, если оба соответствующих бита операндов равны 1, результирующий двоичный разряд равен 1; если же хотя бы один бит из пары равен 0, результирующий двоичный разряд равен 0.Покажем на примере: 192 168 1 125 1 1 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 255 255 255 0 1 1 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 192 168 1 0 На рисунке выше маска подсети для всех сетей одинаковая 255.255.255.192. Но давайте представим ситуацию, когда у нас подсетей так же 4, но количество хостов разное: Сеть 1 120 Сеть 2 60 Сеть 3 25 Сеть 4 12 В принципе, можно оставить и предыдущую маску, но мы провайдер, у нас много клиентов и мы не можем позволить себе тратить IP адреса впустую. Итак, в первой сети на нужно 120 IP адресов, значит маска сети должна быть где-то в районе 120. Мы могли бы выбрать маской 120, но это невозможно, так как 120 не является степенью двойки, поэтому выбираем 128. Для второй подсети первая доступная маска 64. Но так как первые 128 адресов выделены под Сеть 1, то выбираем следующие 64 адреса, а маска будет 192, потому что именно эта маска даст нам нужное количество адресов. Третья сеть у нас состоит из 25 хостов. Ближайший возможный блок адресов это 32. А маска 224 как раз даст эти 32 адреса. В четвёртой же сети нам нужно 16 адресов. Маска будет равна 240. Лайфхак: Чтобы быстро вычислить маску подсети из количества доступных адресов вычитываем необходимое. Например, в этой подсети 256 адресов, нам нужно 32 адреса. Производим простое вычисление: 256 32 = 224. Это число и будет в последнем октете. Сеть № Число хостов Маска подсети Первый IP Последний IP Номер подсети Широковещательный адрес Сеть 1 120 255.255.255.128 192.168.25.1 192.168.25.126 192.168.25.0 192.168.25.127 Сеть 2 60 255.255.255.192 192.168.25.129 192.168.25.190 192.168.25.128 192.168.25.191 Сеть 3 25 255.255.255.224 192.168.25.193 192.168.25.222 192.168.25.192 192.168.25.223 Сеть 4 12 255.255.255.240 192.168.25.225 192.168.25.238 192.168.25.224 192.168.25.239 А сейчас каждому интерфейсу маршрутизатора присвоен IP подсетей с масками разной длины. При этом в каждой подсети у нас остались как минимум 2 свободных адреса на случай добавления новых хостов. На самом деле в сети уже есть готовые таблицы, где уже произведены все подсчеты и прописаны маски для разных сетей. Но умение самому вычислять не помешает, так как на экзаменах по сетевой сертификации попадаются такие задания.
img
Сегодня подробно расскажем как найти практическое применение знаниям, полученным в статье про структуру asteriskcdrdb, а именно, как сделать ежедневные отчеты о входящих звонках на почту. Создание скрипта Чтобы наш .php скрипт смог подключиться к базе данных, необходимо создать пользователя, с правами, которые буду позволять ему извлекать необходимую информацию. Для этого, подключимся к нашему серверу по SSH [root@asterisk]# mysql mysql>CREATE USER ' user'@'localhost' IDENTIFIED BY 'P@ssw0rd'; На данном этапе мы создали пользователя user с паролем P@ssw0rd. Далее дадим ему необходимые права: mysql> GRANT SELECT ON asteriskcdrdb.cdr TO 'user' Создадим файл с расширением .php, в котором мы отразим подключение к нашей базе данных. Запишем эту конструкцию так: $hostname = "localhost"; //адрес хоста. Скрипт мы будем запускать на той же машине, на которой находится БД asteriskcdrdb; $username = "user"; //отражаем пользователя $password = "P@ssw0rd"; //пароль для созданного нами пользователя $dbName = "asteriskcdrdb"; //база данных, в которой хранятся необходимые нам данные $today = date('y-m-d'); // сегодняшняя дата в формате 2016-03-25 $counter = 1; // счетчик mysql_connect($hostname,$username,$password) OR DIE("Не могу создать соединение "); // соединиться к БД mysql_select_db($dbName) or die(mysql_error()); //выбрать базу данных. Если произойдет ошибка - вывести ее $headers = "; charset=windows-1251 "; //заголовок для письма $headers .= "From: Мерион Нетворкс <info@merionet.ru> "; $headers .= "Reply-To: info@merionet.ru "; Предположим, что все входящие звонки приходят на номер секретаря – 100. Так же мы знаем, что при звонке из города, мы видим номер звонящего, который содержит в себе больше 3 символов (пусть у нас используется трехзначная внутренняя нумерация). Наша задача сводится к формулировке запроса к таблице cdr. Добавляем к нашему .php файлу: $query = "SELECT `dst` , `src` , `duration` , `dstchannel` , `calldate` , `disposition` FROM `cdr` WHERE `calldate` >='$today 00:00:00' AND `calldate` <='$today 23:59:59' AND LENGTH( `src` ) >3 AND `dst` = '100';" ; $res=mysql_query($query) or die(mysql_error()); // Выполнить запрос. Если произойдет ошибка - вывести ее. $number = mysql_num_rows($res); // Как много нашлось строк У нас почти все готово. Осталось только обработать данные на выходе. Для этого, нам понадобится следующая конструкция: //формируем шапку нашей таблицы со значениями $mes .= ' table style="max-width: 575px;border-bottom:none; margin: 0 auto;border-spacing: inherit;"> thead> tr style="border-bottom: 2px solid #05477c;"> th style="padding:10px; color: #fff; max-width: 150px;background:#05477c;">Порядковый номер</th> th style="padding:10px; color: #fff; max-width: 150px;background:#05477c;">Дата</th> th style="padding:10px; color: #fff; max-width: 100px;background:#05477c;">От кого</th> th style="padding:10px; color: #fff; max-width: 45px;background:#05477c;">Кому</th> th style="padding:10px; color: #fff; max-width: 45px;background:#05477c;">Статус звонка</th> /tr> /thead>'; //перебираем значения ассоциативного массива. Число элементов данного массива равно числу строк на выходе sql запроса while ($row=mysql_fetch_array($res)) { $mes .= ' tbody> tr style="width: 100px;"> td style="padding:10px; border-bottom: 1px solid #eee; text-align:center;">'.$counter.'</td> td style="padding:10px; border-bottom: 1px solid #eee; text-align:center;min-width: 100px;">'. $row['calldate'].'</td> td style="padding:10px; border-bottom: 1px solid #eee; text-align:center;min-width: 100px;">'. $row['src'].'</td> td style="padding:10px; border-bottom: 1px solid #eee; text-align:center;">'.$row['dst'].'</td> td style="padding:10px; text-align:center; border-bottom: 1px solid #eee; min-width: 120px; ">'.$row['disposition'].'</td> /tr>'; $counter = $counter + 1; } Теперь, мы храним в переменной $mes html таблицу, которая готова к отправке на почту. Добавим в конец скрипта: mail("info@merionet.ru", 'Все входящие за '.$today.'', $mes, $headers); ВАЖНО! Если вы используете кириллические символы, установите кодировку .php файла на Кириллицу (windows-1251) Итак, готово. Давайте посмотрим что приходит нам на почту: Работает. Давайте сделаем ежедневное задание на отработку этого скрипта через cron. Сделаем, например, ежедневно, в 17:30, когда рабочий день подходит к концу: 30 17 * * * php /home/admin/mail_report.php Не забудьте в начала скрипта поставить открывающий тэг php, а в конце скрипта закрывающий.
img
Для пользователей, которые обладают премиальной лицензии на Cisco Unified Contact Center Express (UCCX), одной из самых крутых фич является наличие возможной интеграции и отправки запросов в базу данных. Сами запросы могут строиться на базе введенной звонящим информации, его номера – чего угодно. Безусловно важно сделать ¬¬изначальный дизайн скриптов правильным и учитывать нагрузку. Большие и тяжелые скрипты, которые имеют много «плеч» в БД (базу данных), значительно увеличивают нагрузку на ресурсы сервера. А если БД еще и удалена от сервера CCX и имеет место сетевая задержка, то может иметь место прямое воздействие на бизнес и лояльность звонящего вам клиента. Обзор Cisco Unified CCX Script Editor Для создания и управления IVR скриптами в UCCX используется специальный инструмент - Cisco Unified CCX Editor. Он позволяет визуально управлять некими блоками, которые отвечают за то, или иное действие. Выглядит эта палетта следующим образом: Давайте рассмотрим раздел Database. Здесь мы видимо 4 пункта: DB Get - сопоставление полученных данных из БД к переменным скрипта; DB Read - подключение к серверу и запрос; DB Release - закрываем подключение к БД; DB Write - если нужно внести изменения в БД, используем Write метод; На скриншоте выше видно, что каждый скрипт начинается с события Start и заканчивается событием End. Во время звонка, по ходу выполнения скрипта, мы можем запрашивать данные из БД сколько угодно раз. Каждый запрос имеет свой отдельный список шагов, которые указаны в списке из 4х пунктов выше. Мы рекомендуем предварительно обкатать все SQL запросы, доступ системы и прочие рабочие факторы перед выгрузкой в продуктивную среду Например, давайте посмотрим, что скрыто внутри блока DB Read: Взглянем на поля, которые доступны для конфигурации: DB Resource Name - метка запроса. Своего рода метка; Data Source Name - источник данных (DSN), указанное в административной консоли UCCX (Cisco Unified CCX Administration Database); Timeout (in sec) - пауза выполнения запроса. Этот интервал защитит вашу систему от, например, потери связи с БД. То есть, максимум 7 секунд ожидания. Кстати, если указано как 0, то запрос не будет ограничен по времени; Теперь из вкладки General переходим во вкладку Field Selection: Запрос - SQL – команда (запрос), который вы ходите выполнить. Например, SELECT fld1, fld2 from tbl where fld1 = $variable - выбираем два поля из таблицы, где одно из полей равно переменной, которую, мы ранее, присвоили в скрипте (DTMF от клиента, например); Test (кнопка) - нажмите на эту кнопку, чтобы проверить синтаксис запроса и подключение к БД; Number of rows returned - количество вернувшихся строк запроса, в случае, если была нажата кнопка Test; Show all fields (select table/view) - показать все поля в таблице, к которой выполняется подключение; Отлично, разобрались. Теперь давайте взглянем на блок DB Get: DB Resource Name - лэйбл или имя для этого запроса; Data Source Name - имя БД (настраивается на стороне Cisco Unified CCX Administration); Refresh Database Schema (кнопка) - кнопка, которая отвечает за подтягивание данных БД и таблицы в CCX Editor; Переходим во вкладку Field Selection: Table/View - данное поле показывает имя таблицы из БД, которая выбрана во вкладке General, которую мы описывали выше; Табличное поле: Field Name - имя поля, в выбранной БД; Data Type - типа данных (строка/число и так далее); Local Variable - переменная скрипта, которая будет хранить соответствующее поле; Add/Modify (кнопки) - кнопки, которые отвечают за модификацию полей (кроме типа данных, он read only); Полученные данные можно использовать в скрипте, например, чтобы озвучивать клиенту (TTS) его данные по номеру телефона, или по введенным цифрам (номер заказа). Кстати, аналогичную фичу мы реализовали в связке Yandex.SpeechKit и Asterisk.
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59