This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
|
использование_телефонии_asterisk_с_microsoft_ad [2017/03/30 14:33] val |
использование_телефонии_asterisk_с_microsoft_ad [2017/03/31 10:17] (current) val |
||
|---|---|---|---|
| Line 1: | Line 1: | ||
| ====== Использование телефонии Asterisk на предприятии с инфраструктурой Microsoft Active Directory ====== | ====== Использование телефонии Asterisk на предприятии с инфраструктурой Microsoft Active Directory ====== | ||
| + | |||
| + | **[[https://youtu.be/uqTXbQBfcQc|Запись]]** | ||
| **Техническое задание**: Сделать рабочие места в офисе универсальными. Звонок на корпоративный номер сотрудника должен приходить на телефонный аппарат расположенный там, где в данный момент работает сотрудник. Пример: [[http://www.fresher.ru/2011/12/25/neobychnyj-ofis-philips-bez-opredelennogo-mesta-raboty/|Необычный офис Philips – без определенного места работы]] | **Техническое задание**: Сделать рабочие места в офисе универсальными. Звонок на корпоративный номер сотрудника должен приходить на телефонный аппарат расположенный там, где в данный момент работает сотрудник. Пример: [[http://www.fresher.ru/2011/12/25/neobychnyj-ofis-philips-bez-opredelennogo-mesta-raboty/|Необычный офис Philips – без определенного места работы]] | ||
| + | |||
| ===== 1. Развертывание сети предприятия ===== | ===== 1. Развертывание сети предприятия ===== | ||
| Line 48: | Line 51: | ||
| **Техническое задание**: использовать LDAP каталог предприятия для установки текстового CallerID при телефонных вызовах | **Техническое задание**: использовать LDAP каталог предприятия для установки текстового CallerID при телефонных вызовах | ||
| - | <code> | ||
| - | # vim mac_phone_secret_table.txt | ||
| - | </code><code> | ||
| - | BCC34221709A 401 tpassword401 | ||
| - | BCC34221709B 402 tpassword402 | ||
| - | BCC34221709C 403 tpassword403 | ||
| - | </code> | ||
| - | * Заполняем атрибуты Display Name, Telephone number | + | * Заполняем атрибуты Display Name, Telephone number, Address->Zip/Postsal code (пароль телефона) |
| - | * [[Сервис Asterisk#Интеграция с Microsoft AD и LDAP]] | + | ==== Копирование всей, необходимой для телефонии информации из LDAP в текстовый файл ==== |
| <code> | <code> | ||
| - | # cat /root/create_login_phone_cid_name_table.sh | + | # cat /root/create_login_phone_table.sh |
| </code><code> | </code><code> | ||
| #!/bin/sh | #!/bin/sh | ||
| Line 66: | Line 62: | ||
| IFS=' ' | IFS=' ' | ||
| - | ldapsearch -x -D "cn=Administrator,cn=Users,dc=corpX,dc=un" -w 'Pa$$w0rd' -h server.corp6.un -b "dc=corpX,dc=un" "(telephoneNumber=4*)" sAMAccountName cn telephoneNumber | perl -p00e 's/\r?\n //g'| | + | ldapsearch -x -D "cn=Administrator,cn=Users,dc=corp6,dc=un" -w 'Pa$$w0rd' -h server.corp6.un -b "dc=corp6,dc=un" "(telephoneNumber=4*)" sAMAccountName cn telephoneNumber postalCode | perl -p00e 's/\r?\n //g'| |
| while read s | while read s | ||
| do | do | ||
| Line 72: | Line 68: | ||
| read fn cn | read fn cn | ||
| echo $fn | grep -q '::' && cn=`echo $cn | base64 -d` | echo $fn | grep -q '::' && cn=`echo $cn | base64 -d` | ||
| + | read fn pass | ||
| read fn tn | read fn tn | ||
| - | read fn login # need for universal workplace | + | read fn login |
| - | echo $login $tn $cn | + | echo $login $tn $pass $cn |
| done | done | ||
| </code><code> | </code><code> | ||
| - | # /root/create_login_phone_cid_name_table.sh > login_phone_cid_name_table.txt | + | # /root/create_login_phone_table.sh > /root/login_phone_table.txt |
| - | # cat login_phone_cid_name_table.txt | + | # cat /root/login_phone_table.txt |
| </code><code> | </code><code> | ||
| - | user1 401 Ivan I. Ivanov | + | user1 401 tpassword401 Ivan I. Ivanov |
| - | user2 402 Petr P. Petrov | + | user2 402 tpassword402 Petr P. Petrov |
| - | user3 403 Sidor S. Sidorov | + | user3 403 tpassword403 Sidor S. Sidorov |
| + | user4 404 tpassword404 Vsily M. Koshkin | ||
| + | user5 405 tpassword405 Федор И. Шаляпин | ||
| + | </code> | ||
| + | |||
| + | ==== Размещение адресной книги в формате HTML ==== | ||
| + | |||
| + | * [[Администрирование сервисов UNIX]] (Веб сервер - Модуль 8.3) | ||
| + | |||
| + | <code> | ||
| + | # cat /root/login_phone_table.txt | awk 'BEGIN {print "<html><body><table>"} {print "<tr><td>" $4 " " $5 " " $6 "</td><td>" $2 "</td></tr>"} END {print "</table></body></html>"}' > /var/www/html/addrbook.html | ||
| + | </code> | ||
| + | |||
| + | ==== Создание файла для импорта адресной книги в формате телефонов Panasonic ==== | ||
| + | |||
| + | * [[Базовая станция DECT KX-UDS124]] | ||
| + | |||
| + | <code> | ||
| + | # cat /root/login_phone_table.txt | awk '{printf ("\t%s %s %s\t\t%s\t\t\t\t\t\n",$4,$5,$6,$2)}' | unix2dos | iconv -f utf-8 -t utf-16 > phonebook.tsv | ||
| + | </code> | ||
| + | |||
| + | ==== Создание файла users.conf ==== | ||
| + | <code> | ||
| + | # cat /root/create_users_conf.sh | ||
| </code><code> | </code><code> | ||
| - | # /root/create_phones_conf.sh < mac_phone_secret_table.txt > /etc/asterisk/phones.conf | + | #!/bin/sh |
| - | # cat /etc/asterisk/phones.conf | + | while read login cid_number secret fullname |
| + | do | ||
| + | echo "[$cid_number]" | ||
| + | echo "cid_number = $cid_number" | ||
| + | echo "fullname = $fullname" | ||
| + | echo "secret = $secret" | ||
| + | echo "type=friend" | ||
| + | echo "host=dynamic" | ||
| + | echo | ||
| + | done | ||
| </code><code> | </code><code> | ||
| - | [401] | + | # /root/create_users_conf.sh < /root/login_phone_table.txt > /etc/asterisk/users.conf |
| - | secret = tpassword401 | + | |
| - | type=user | + | |
| - | ... | + | |
| - | </code><code> | + | |
| - | # /root/create_users_conf.sh < login_phone_cid_name_table.txt > /etc/asterisk/users.conf | + | |
| # cat /etc/asterisk/users.conf | # cat /etc/asterisk/users.conf | ||
| Line 101: | Line 125: | ||
| cid_number = 401 | cid_number = 401 | ||
| fullname = Ivan I. Ivanov | fullname = Ivan I. Ivanov | ||
| - | type=peer | + | secret = tpassword401 |
| + | type=friend | ||
| + | host=dynamic | ||
| ... | ... | ||
| </code><code> | </code><code> | ||
| Line 112: | Line 138: | ||
| #include "/etc/asterisk/users.conf" | #include "/etc/asterisk/users.conf" | ||
| - | #include "/etc/asterisk/phones.conf" | + | |
| + | [403] | ||
| + | secret=tpassword403 | ||
| + | type=friend | ||
| + | host=dynamic | ||
| + | </code><code> | ||
| + | # asterisk -x 'sip reload' | ||
| + | # asterisk -x 'sip show users' | ||
| </code> | </code> | ||
| ===== 4. Настройка телефонного аппарата на номер использующего его сотрудника ===== | ===== 4. Настройка телефонного аппарата на номер использующего его сотрудника ===== | ||
| Line 130: | Line 163: | ||
| <code> | <code> | ||
| + | root@gate.corpX.un:~# cat /var/www/html/0800.2700.d8e8.cfg | ||
| + | </code><code> | ||
| + | [sipproxy] | ||
| + | type=peer | ||
| + | defaultuser=40N | ||
| + | secret=tpassword40N | ||
| + | host=gate.corpX.un | ||
| + | insecure=invite | ||
| + | callbackextension=sipproxy | ||
| + | </code><code> | ||
| [phone2:~] # cat /root/fetch_conf.sh | [phone2:~] # cat /root/fetch_conf.sh | ||
| </code><code> | </code><code> | ||
| #!/bin/sh | #!/bin/sh | ||
| - | /usr/local/bin/curl -s http://gate.corpX.un/0800.27NN.NNNN.cfg > /usr/local/etc/asterisk/users.conf | + | /usr/local/bin/curl -s http://gate.corp6.un/0800.2700.d8e8.cfg > /usr/local/etc/asterisk/users.conf |
| /usr/local/sbin/asterisk -x 'sip reload' | /usr/local/sbin/asterisk -x 'sip reload' | ||
| Line 142: | Line 185: | ||
| * * * * * /root/fetch_conf.sh | * * * * * /root/fetch_conf.sh | ||
| </code><code> | </code><code> | ||
| - | [phone2:~] # cat /usr/local/etc/asterisk/sip.conf | + | [phoneN:~] # cat /usr/local/etc/asterisk/sip.conf |
| </code><code> | </code><code> | ||
| [general] | [general] | ||
| Line 151: | Line 194: | ||
| </code> | </code> | ||
| - | ==== 4.2 Определение на какой рабочей станции зарегистрировался пользователь ==== | + | ==== 4.3 Определение на какой рабочей станции зарегистрировался пользователь ==== |
| * [[Создание отказоустойчивых UNIX решений]] (Модуль 7.5, публичный каталог доступный на запись) | * [[Создание отказоустойчивых UNIX решений]] (Модуль 7.5, публичный каталог доступный на запись) | ||
| Line 159: | Line 202: | ||
| gate# tail -n /disk2/logon.txt | gate# tail -n /disk2/logon.txt | ||
| </code> | </code> | ||
| - | ==== 4.3 Определение mac адреса телефона, через который подключена рабочая станция ==== | + | ==== 4.4 Определение mac адреса телефона, через который подключена рабочая станция ==== |
| * [[Linux FreeBSD Взаимодействие с сетевым оборудованием Cisco]] (Модуль 3. Использование snmp для получения mac address table) | * [[Linux FreeBSD Взаимодействие с сетевым оборудованием Cisco]] (Модуль 3. Использование snmp для получения mac address table) | ||
| Line 165: | Line 208: | ||
| <code> | <code> | ||
| - | switch(config)#ip rcmd rcp-enable | + | switch(config) |
| - | switch(config)#ip rcmd rsh-enable | + | </code><code> |
| - | switch(config)#no ip domain lookup | + | interface VLAN1 |
| + | ip address 192.168.6.3 255.255.255.0 | ||
| + | no shut | ||
| + | exit | ||
| - | switch(config)#ip host gate 192.168.6.1 | + | ip rcmd rcp-enable |
| - | switch(config)#ip rcmd remote-host root gate root enable | + | ip rcmd rsh-enable |
| + | no ip domain lookup | ||
| + | ip host gate 192.168.6.1 | ||
| + | ip rcmd remote-host root gate root enable | ||
| - | gate# host CLIENT2 | + | mac-address-table aging-time 1000000 |
| + | </code><code> | ||
| + | gate# apt install rsh-client | ||
| + | |||
| + | gate# host CLIENTN | ||
| gate# arp -a | gate# arp -a | ||
| + | |||
| + | gate# echo "192.168.6.3 switch" >> /etc/hosts | ||
| gate# rsh switch show mac-address-table | gate# rsh switch show mac-address-table | ||
| </code> | </code> | ||
| - | ==== 4.4 Собираем все вместе ==== | + | ==== 4.5 Собираем все вместе ==== |
| * [[https://youtu.be/GxVmukxVUo0|Видеоурок: Программирование на sh]] | * [[https://youtu.be/GxVmukxVUo0|Видеоурок: Программирование на sh]] | ||
| Line 209: | Line 264: | ||
| defaultuser=$defaultuser | defaultuser=$defaultuser | ||
| secret=$secret | secret=$secret | ||
| - | host=gate.corp13.un | + | host=gate.corp6.un |
| insecure=invite | insecure=invite | ||
| callbackextension=sipproxy | callbackextension=sipproxy | ||