Skip to content

Instantly share code, notes, and snippets.

@drax68
Created April 18, 2012 10:01
Show Gist options
  • Save drax68/2412600 to your computer and use it in GitHub Desktop.
Save drax68/2412600 to your computer and use it in GitHub Desktop.
Zabbix phone notification
Шаг №1 — Пререквизиты. Ставим festival и pjsip
sudo aptitude install festival
Загружаем и собираем pjsip:
wget http://www.pjsip.org/release/1.10/pjproject-1.10.tar.bz2
tar xfv pjproject-1.10.tar.bz2
cd pjproject-1.10
./configure --disable-sound
make dep
make
Из всего что насобиралось понадобится только pjsua:
sudo cp pjsip-apps/bin/pjsua-x86_64-unknown-linux-gnu /usr/bin/pjsua
Создадим файл /etc/pjsuarc со следующим содержанием:
--duration=1 #если снимем трубку, то сервер тут же отключится
--null-audio #чтобы pjsua не ругалась на отсутствие звукового устройства
--id sip:SIPID@sipnet.ru #конфиг для sipnet.ru
--registrar sip:sipnet.ru
--realm etc.tario.ru
--username SIPID
--password PASSWORD
Теперь самое время проверить конфигурацию и сделать тестовый звонок:
pjsua --config-file=/etc/pjsuarc sip:+12345678901@sipnet.ru
В случае с sipnet, если не включена услуга «АОН» в разделе «Премиум услуги» (не знаю почему премиум, услуга бесплатная), или выбран тот же номер, на который совершается звонок, то определится номер +74993462198 (по крайней мере для России), это не позволяет идентифицировать, что звонит наш сервер.
Поэтому я поступил так: зарегистрировал в sipnet свой второй номер и указал его в качестве отображаемого номера. В телефоне сохранил его под именем Nagios и поставил ему приятную громкую мелодию.
Далее изменим права на /etc/pjsuarc, чтобы видеть пароль могли только root и nagios:
sudo chmod 640 /etc/pjsuarc
sudo chown root:nagios /etc/pjsuarc
Шаг №2 — Конфиг zabbix_server
zabbix@zabbix-new:~$ grep AlertScript /etc/zabbix/zabbix_server.conf
### Option: AlertScriptsPath
AlertScriptsPath=/home/zabbix/bin/
Шаг №3 — скрипты заббикса
zabbix@zabbix-new:~$ cat /home/zabbix/bin/sipalarm
#!/bin/bash
HOME=/home/zabbix
SPOOL=$HOME/spool
STAMP=`date +%s`
add_to_spool () {
text2wave <(echo $2) > $SPOOL/$STAMP$1.wav
}
add_to_spool "$1" "$2"
$HOME/bin/sipnd &
zabbix@zabbix-new:~$ cat /home/zabbix/bin/sipnd
#!/bin/bash
HOME=/home/zabbix
SPOOL=$HOME/spool
die () {
echo "$1"
exit 0
}
check_lock () {
test -e $HOME/sipnd.lock && die "already running"
}
get_lock () {
echo $$ > $HOME/sipnd.lock
}
drop_lock () {
rm $HOME/sipnd.lock
}
check_lock; get_lock
for i in $SPOOL/*.wav; do
TMP=${i##*+}
PHONE=+${TMP%%.wav}
echo "DEBUG: pjsua --config-file=/etc/pjsua.cfg --play-file=$i sip:$PHONE@sipnet.ru --auto-play"
( sleep 60 && echo q ) | pjsua --config-file=/etc/pjsua.cfg --play-file=$i sip:$PHONE@sipnet.ru --auto-play
wait
rm $i
done
drop_lock
Шаг №4 — Настройка оповещений
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment