Меню адміністратора або запуск системних команд лінуксу з-під астериску

адміністратора

Багато хто стикався з необхідністю запуску системних команд лінуксу з-під астериску, але так як астериск запущений з правами asterisk: asterisk зробити це не так і легко. Тобто. наприклад, є необхідність використання інтерактивного меню адміністратора, в якому ми зможемо перезавантажити астериск, рестартувати мережевий інтерфейс, зупинити і запустити openvpn і т.д.

[from-internal-custom] exten ≥ 665,1,Goto (admin -menu,s,1) [admin-menu] exten ≥ s,n,Authenticate (333 ) exten ≥ s,n,WaitExten ( ) exten ≥ 1,1,System ( /usr/local/sbin/amportal restart) exten ≥ 1,n,Hangup ( ) exten ≥ 2,1 ,System ( /etc/init.d/network restart) exten ≥ 2,n,Hangup ( ) exten ≥ 3,1,System (sudo /etc/init.d/openvpn start) exten ≥ 3,n,Hangup ( ) exten ≥ 4,1,System (sudo /etc/init.d/openvpn stop) exten ≥ 4,n,Hangup ( )

Після натискання кнопки 1 відбудеться перезапуск астериску і всіх його служб За натисканням кнопки 2 відбудеться рестарт мережного інтерфейсу За натисканням кнопки 3 ми включаємо службу openvpn По натисканні кнопки 4 ми вимикаємо службу openvpn

Здавалося б, нам залишається лише виконати в консолі астериску dialplan reload (довідник основних команд можна подивитися тут) і все повинне заробити, але… Все працювало б, якщо астериск був запущений з правами root. Для того щоб змусити астериск виконувати деякі рутові команди, нам потрібно підправити фай /etc/sudoers в якому ми або повністю дозволяємо астериску виконувати всі рутові команди (не рекомендується) або ж дозволяємо виконання лише деяких. Знаходимо наступні рядки і додаємо користувача asterіsk якому призначаємо виконання певних команд без введення пароля.

Будьте дуже обережні під час редагування файлу sudoers. Помилка чи неправильнаналаштування можуть призвести до пролому в безпеці.

## Allow root to run any commands anywhere root ALL= (ALL ) ALLasterisk ALL= NOPASSWD:/etc/init.d/openvpn, NOPASSWD:/usr/sbin/amportal, NOPASSWD: /etc/init.d/network

Власне, тепер ви можете запускати будь-які системні команди через астериск.