Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
asterisk -rx "sip show registry" | awk 'BEGIN{print "{\n\"data\": ["; } NF>6 {gsub(/:.+/, "", $1); print "\t{ \"{#TRUNKIP}\": \""$1"\" },";} END{print "\t]\n}";}'
{
"data": [
{ "{#TRUNKIP}": "172.21.0.23" },
]
}
asterisk -rx "sip show registry" | awk 'BEGIN{print "{\n\"data\": ["; } NF>6 {print "\t{ \"{#TRUNKNAME}\": \""$3"\" },";} END{print "\t]\n}";}'
{
"data": [
{ "{#TRUNKNAME}": "050" },
]
}
asterisk -rx "sip show registry" | awk '$$3 ~ /'$1'/ || $$1 ~ /''$1/ {if($5 ~ /Registered/) print 1; else print 0;}'m0ps@zabbix:~$ zabbix_get -s pbx.company.com -k asterisk.discovery[ips]{
"data":[
{
"{#TRUNKIP}":"sip.skype.com"
},
{
"{#TRUNKIP}":"natsip.datagroup.com.ua"
},
]
}
#!/bin/bash
ARRAY=(
one
two
three
four
)
echo -en "{\"data\": ["
for i in ${ARRAY[@]}; do
echo -en "{\"{#QUEUENAME}\":\"$i\"},"
done
echo -en "]}"
#!/bin/bash
ARRAY=(
one
two
three
four
)
s=""
echo -en "{\"data\": ["
for i in ${ARRAY[@]}; do
echo -en "$s"
s=","
echo -en "{\"{#QUEUENAME}\":\"$i\"}"
done
echo -en "]}"
#!/usr/bin/php
<?php
error_reporting(1);
exec("/usr/bin/sudo -u asterisk /usr/sbin/asterisk -rx 'sip show registry'", $tr_list);
foreach($tr_list as $line) {
$ar_line = null;
$ar_line[] = trim(substr($line, 0, 40));
$ar_line[] = trim(substr($line, 47, 19));
$ar_line = array_diff($ar_line, array(''));
$ar_line = array_combine(array(0,1), $ar_line);
$trunks[] = $ar_line['1'];
$ip = explode(":", $ar_line['0']);
if (!in_array($ip['0'], $ips)) {
$ips[] = $ip['0'];
}
}
$trunks[0] = '';
$ips[0] = '';
$trunks = array_diff($trunks, array(''));
$ips = array_diff($ips, array(''));
function getJson($items, $name) {
$first = 1;
print "{\n";
print "\t\"data\":[\n\n";
$lastitem = end($items);
foreach ($items as $item) {
if ($item != $lastitem) {
if (!$first) {
print "\t,\n" ;
$first = 0;
}
print "\t{\n";
print "\t\t\"{#$name}\":\"$item\"\n";
print "\t},\n";
} else {
if (!$first) {
print "\t,\n" ;
$first = 0;
}
print "\t{\n";
print "\t\t\"{#$name}\":\"$item\"\n";
print "\t}\n";
}
}
print "\n\t]\n";
print "}\n";
}
if ($argv[1] == 'trunks') {
getJson($trunks, "TRUNKNAME");
}
elseif ($argv[1] == 'ips') {
getJson($ips, "TRUNKIP");
}
else {
print "error";
}
#!/bin/bash
CID="7383xxxxxxx" #пользователь, под которым подключается глючный транк, дабы отделить от остальных транков
reg=`asterisk -rx "sip show registry"| grep $CID | awk '{print $5}'`
if [ "$reg" != "Registered" ]; then
asterisk -rx "sip reload"
echo `date`" sip reloaded" >> /var/log/sipreg.log
fi
function getJson($items, $name) {
$first = 1;
print "{\n";
print "\t\"data\":[\n\n";
$lastitem = end($items);
foreach ($items as $item) {
if ($item != $lastitem) {
if (!$first) {
print "\t,\n" ;
$first = 0;
}
print "\t{\n";
print "\t\t\"{#$name}\":\"$item\"\n";
print "\t},\n";
} else {
if (!$first) {
print "\t,\n" ;
$first = 0;
}
print "\t{\n";
print "\t\t\"{#$name}\":\"$item\"\n";
print "\t}\n";
}
}
print "\n\t]\n";
print "}\n";
}
Мониторинг транков Asterisk с помощью низкоуровнего обнаружения Zabbix