Запуск команд на Mikrotik по звонку на FreePBX

В данной заметке я опишу решение задачи, согласно которой было необходимо по звонку на внутренний телефонный номер FreePBX запустить определенные команды на маршрутизаторе Mikrotik.

Настраиваем FreePBX для подключения к Mikrotik

В данной заметке я опишу решение задачи, согласно которой было необходимо по звонку на внутренний телефонный номер FreePBX запустить определенные команды на маршрутизаторе Mikrotik.

Конфигурируем выбранный внутренний номер 998 для целей запуска команд на Микротике:

Настраиваем FreePBX с помощью командной строки

1 шаг. Создаем звонок в [link]/etc/asterisk/extensions_custom.conf[/link]:

[office1-block]

exten =&gt, s,1,Noop(***Red Button***)

same =&gt, n,Background(beep)

same =&gt, n,WaitExten(3)

exten =&gt, 1,1,Noop(***Shutdown inteface GRE-to-office1***)

same =&gt, n,Authenticate(1)

,same =&gt, n,Playback()

same =&gt, n,System(/var/lib/asterisk/scripts/red_button.sh &)

same =&gt, n,Noop(Результат выполнения: ${SYSTEMSTATUS})

same =&gt, n,Hangup

2 шаг. Меняем права на /var/lib/asterisk/scripts/red_button.sh: chown asterisk. scripts -R

[root@freepbx scripts]# cat red_button.sh

#!/bin/bash

ssh red_button@192.168.2.1 /interface gre disable gre-office1

[root@freepbx scripts]# ls -l

total 20

-rwxrwxr-x 1 root root 109 Jul 12 11:24 red_button.sh

[root@freepbx scripts]# chown asterisk. red_button.sh

[root@freepbx scripts]# ls -l

total 20

-rwxrwxr-x 1 asterisk asterisk 109 Jul 12 11:24 red_button.sh

3 шаг. Запускаем оболочку под asterisk: sudo -u asterisk bash

Генерируем ключ для подключения по SSH

4 шаг. Генерируем rsa ключ для пользователя: asterisk ssh-keygen -t rsa

bash-4.1$ ssh-keygen -t rsa

Genetrating public/private rsa key pair.

Enter file in which to save the key (/home/asterisk/.ssh/id_rsa):

Enter passphrase (empty fo no passphrase): {press enter}

Enter same passphrase again:

Your identification has been saved in /home/asterisk/.ssh/id_rsa.

Your public key has been saved in /home/asterisk/.ssh/id_rsa.pub.

The key fingerprint is:

7c:b7:fa:7b:a0:c6:bb:11:61:88:01:d5:88:b0:e8:7d asterisk@freepbx.company.com

The key’s random image is:

+—[ RSA 2048]—-+

| …+oo |

| . .. .o.. |

|. . . . o |

|. . . . . |

| . . E S o . |

| . . o . |

| ….. |

| +o . |

| .++oo |

+——————+

5 шаг. Загружаем файл /home/asterisk/.ssh/id_rsa.pub по ftp на mikrotik:

6 рекомендаций по безопасному управлению роутерами MikroTik с помощью Winbox

bash-4.1$ ftp 192.168.2.1

Connected to 192.168.2.1 (192.168.2.1).

220 office1 FTP server (MikroTik 6.39.2) ready

Name (192.168.2.1:asterisk): user1

331 Password required for user1

Password:

230 User user1 logged in

Remote system type is UNIX.

ftp&gt, put id_rsa.pub

local: id_rsa.pub remote: id_rsa.pub

227 Entering Passive Mode (192,168,2,1,207,227).

150 Opening ASCII mode data connection for ‘/id_rsa.pub’

226 ASCII transfer complete

411 bytes sent in 7e-05 secs (5871.43 Kbytes/sec)

ftp&gt, quit

221 Closing

bash-4.1$

6 шаг. Подключаемся к mikrotik: ssh 192.168.2.1 -l user1

Вводим пароль.

[user1@office1-gw1] &gt, user ssh-keys import public-key-file=id_rsa.pub

[user1@office1-gw1] &gt, user ssh-keys print

Flags: R — RSA, D — DSA

# USER BITS KEY-OWNER

0 R user1 2048 asterisk@freepbx.company.com

7 шаг. Проверяем запуск команды из-под asterisk на mikrotik:

su -c ‘ssh red_button@192.168.2.1 /interface gre disable gre-office1’ asterisk

8 шаг. Делаем проверочный звонок и проверяем выключился ли GRE-интерфейс

Задача выполнена