最火Nagios网络检测工具集成检测系统培养皿下料机汽车涂料起重滑轮Frc
Nagios络检测工具集成Asterisk
nagios 是着名的络检测工具,功能相当强大,支持界面管理系统。而且还可以支持在个人电脑,服务器和虚拟机安装部署。它支持络检测,入侵,数据流量的检测。
现在有第三方模块可以集成Asterisk接口。通过AMI来实现nagios 对asterisk的SIP/PSJIP,dahdi,IAX呼叫的监控。通过计价秤修改nagios 配置,集成体温计AMI实现对asterisk通道检测。
#!/bin/bash
# Program : check_asterisk_ami
# :
# Author : Jason Rivers
# : Dave Burgess
# :
# Purpose : Nagios plugin to return Information from an Asterisk host
#using AMI
# :
# Parameters : --help
# : --version
# :
# Returns : Standard Nagios status_* codes as defined in
# :
# Licence : GPL
# Notes : See --help for details
#============:==============================================================
PROGNAME=`basename $0`
PROGPATH=`echo $0 | sed -e s,[\\/][^\\/][^\\/]*$,, `
REVISION=`echo $Revision: 1.2.0.2 $ | sed -e s/[^.]//g `
. $PROGPATH/
print_usage() {
echo Usage: $PROGNAME [-H hostname] [-q query] [-u username] [-p password] [-P port] [-w warning] [-c critical]
echo -HHostname
echo -qCommand to query
echo -uAMI Username
echo -pAMI Password
echo -P(optional) AMI PORT
echo -w(optional) warning threshold
echo -c(optional) critical threshold
echo
echo SupportedCommands:
echo channels(check number of current channels in-use)
echo calls(check number of current calls)
echo pjsippeers(check number of current calls)
echo sippeers(check number of current calls)
echo sccppeers(check number of current calls)
echo iaxpeers(check number of current calls)
echo
echo Usage: $PROGNAME --help
echo Usage: $PROGNAME --version
print_help() {
print_revision $PROGNAME $REVISION
echo
echo Nagios Plugin to check Asterisk using AMI
echo
print_usage
echo
echo Asterisk Call Status Check. Jason Rivers 2011
echo
exit 0
# support
# If we have arguments, process them.
exitstatus=$STATE_WARNING #default
while test -n $1 do
case $1 in
--help)
print_help
exit $STATE_OK
print_help
exit $STATE_OK
--version)
print_revision $PROGNAME $REVISION
exit $STATE_OK
print_revision $PROGNAME $REVISION
exit $STATE_OK
REMOTEHOST=$2;
shift;
-P) AMIPORT=$2;
shift;
-u) AMIUSER=$2;
shift;
-p) AMIPASS=$2;
shift;
-q) CHECK=$2;
shift;
CRITICALNUMBER=$2
shift;
WARNINGNUMBER=$2;
shift;
echo Unknown argument: $1
print_usage
exit $STATE_UNKNOWN
esac
shift
done
if [ ${AMIPORT} = ]; then
AMIPORT= 5038
if [ ${CHECK} = channels ]; then
##WARNING
if [ $WARNINGNUMBER = ]; then
WARNINGNUMBER=10
if [ $CRITICALNUMBER = ]; then
CRITICALNUMBER=20
## Checking active chanels on Asterisk
CHANNELS=`echo -e Action: login\r\nUsername: ${AMIUSER}\r\nSecret: ${AMIPASS}\r\nEvents: off\r\n\r\nAction: CoreShowChannels\r\n\r\nAction: Logoff\r\n\r\n | netcat $REMOTEHOST ${AMIPORT} | tee t | awk /^ListItems/ {print $2} |tr -d \r `
if [ $CHANNELS = ]; then
echo UNKNOWN: Unable to get number of Channels
exit $STATUS_UNKNOWN
if [ $CHANNELS -lt $WARNINGNUMBER ]; then
exitstatus=$STATU_OK
MSG= OK: ${CHANNELS} Asterisk calls active|channels=${CHANNELS}
elif [ $CHANNELS -lt $CRITICALNUMBER ]; then
exitstatus=$STATU_WARNING
MSG= WARNING: ${CHANNELS} Asterisk calls active|channels=${CHANNELS}
elif [ $CHANNELS -ge $CRITICALNUMBER ]; then
exitstatus=$STATU_CRITICAL
MSG= CRITICAL: ${CHANNELS} Asterisk calls active|channels=${CHANNELS}
elif [ ${CHECK} = calls ]; then
##WARNING
if [ $WARNINGNUMBER = ]; then
WARNINGNUMBER=5
if [ $CRITICALNUMBER = ]; then
CRITICALNUMB相对技术方面的突破ER=10
CALLS=`echo -e Action: login\r\nUsernam最大可达几米e: ${AMIUSER}\r\nSecret: ${AMIPASS}\r\nEvents: off\r\n\r\nAction: Command\r\ncommand: Core Show Channels\r\n\r\nAction: Logoff\r\n\r\n | netcat ${REMOTEHOST} ${AMIPORT} | awk /active call/ {print $1} | tr -d \r `
if [ $CALLS = ]; then
echo UNKNOWN: Unable to get number of calls
exit $STATUS_UNKNOWN
if [ $CALLS -lt $WARNINGNUMBER ]; then
exitstatus=$STATE_OK
MSG= OK: ${CALLS} Asterisk calls active|calls=${CALLS}
elif [ $CALLS -lt $CRITICALNUMBER ]; then
exitstatus=$STATE_WARNING
MSG= WARNING: ${CALLS} Asterisk calls active|calls=${CALLS}
elif [ $CALLS -ge $CRITICALNUMBER ]; then
exitstatus=$STATE_CRITICAL
MSG= CRITICAL: ${CALLS} Asterisk calls active|calls=${CALLS}
if [ $CALLS = ]; then
CALLS=0
elif [ ${CHECK} = iaxpeers ]; then
##WARNING
if [ $WARNINGNUMBER = ]; then
WARNINGNUMBER=5
if [ $CRITICALNUMBER = ]; then
CRITICALNUMBER=10
IAXpeers=`echo -e Action: login\r\nUsername: ${AMIUSER}\r\nSecret: ${AMIPASS}\r\nEvents: off\r\n\r\nAction: Command\r\ncommand: iax2 show peers\r\n\r\nAction: Logoff\r\n\r\n | netcat ${REMOTEHOST} ${AMIPORT} | awk /online/ {print $0} | tr -d \r `
ONLINE=`echo $IAXpeers | sed s/.*\[\(.*\) online.*unmonitored.*/\1/ `
OFFLINE=`echo $IAXpeers | sed s/.*online, \(.*\) offline.*unmonitored.*/\1/ `
if [ $OFFLINE = ]; then
echo UNKNOWN: Unable to get number of IAX Peers
exit $STATUS_UNKNOWN
if [ $OFFLINE -lt $WARNINGNUMBER ]; then
exitstatus=$STATE_OK
MSG= OK: ${ONLINE} online, ${OFFLINE} offline IAX2 peers|online=${ONLINE} offline=${OFFLINE}
elif [ $OFFLINE -lt $CRITICALNUMBER ]; then
exitstatus=$STATE_WARNING
MSG= WARNING: ${ONLINE} online, ${OFFLINE} offline IAX2 peers|online=${ONLINE} offline=${OFFLINE}
elif [ $OFFLINE -ge $CRITICALNUMBER ]; then
exitstatus=$STATE_CRITICAL
MSG= CRITICAL: ${ONLINE} online, ${OFFLINE} offline IAX2 peers|online=${ONLINE} offline=${OFFLINE}
elif [ ${CHECK} = sippeers ]; then
##WARNING
if [ $WARNINGNUMBER = ]; then
WARNINGNUMBER=5
if [ $CRITICALNUMBER = ]; then
CRITICALNUMBER=10
SIPpeers=`echo -e Action: login\r\nUsername: ${AMIUSER}\r\nSecret: ${AMIPASS}\r\nEvents: off\r\n\r\nAction: Command\r\ncommand: sip show peers\r\n\r\nAction: Logoff\r\n\r\n | netcat ${REMOTEHOST} ${AMIPORT} | awk /online/ {print $0} | tr -d \r `
ONLINE=`echo $SIPpeers | sed s/.*Monitored: \(.*\) online.*Unmonitored.*/\1/ `
OFFLINE=`echo $SIPpeers | sed s/.*online, \(.*\) offline.*Unmonitored.*/\1/ `
if [ $OFFLINE = ]; then
echo UNKNOWN: Unable to get number of SIP Peers
exit $STATUS_UNKNO其变温速率1般要求1℃/minWN
if [ $OFFLINE -lt $WARNINGNUMBER ]; then
exitstatus=$STATE_OK
MSG= OK: ${ONLINE} online, ${OFFLINE} offline SIP peers|online=${ONLINE} offline=${OFFLINE}
elif [ $OFFLINE -lt $CRITICALNUMBER ]; then
exitstatus=$STATE_WARNING
MSG= WARNING: ${ONLINE} online, ${OFFLINE} offline SIP peers|online=${ONLINE} offline=${OFFLINE}
elif [ $OFFLINE -ge $CRITICALNUMBER ]; then
exitstatus=$STATE_CRITICAL
MSG= CRITICAL: ${ONLINE} online, ${OFFLINE} offline SIP peers|online=${ONLINE} offline=${OFFLINE}
elif [ ${CHECK} = pjsippeers ]; then
##WARNING
if [ $WARNINGNUMBER = ]; then
WARNINGNUMBER=5
if [ $CRITICALNUMBER = ]; then
CRITICALNUMBER=10
echo -e Action: login\r\nUsername: ${AMIUSER}\r\nSecret: ${AMIPASS}\r\nEvents: off\r\n\铁铆钉r\nAction: Command\r\ncommand: pjsip show endpoints\r\n\r\nAction: Logoff\r\n\r\n | netcat ${REMOTEHOST} ${AMIPORT} | grep Endpoint: | tail -n +2 /tmp/hold
cat /tmp/hold
LINES=`cat /tmp/hold | wc -l`
UP=`cat /tmp/hold | grep In use | wc -l`
ONLINE=`cat /tmp/hold | grep Not in use | wc -l`
ONLINE=`expr $ONLINE + $UP`
OFFLINE=`cat /tmp/hold | grep Unavailable | wc -l`
rm -f /tmp/hold
#echo $LINES
#echo $ONLINE
#echo $OFFLINE
if [ $OFFLINE = ]; then
echo UNKNOWN: Unable to get number of PJ-SIP Endpoints
exit $STATUS_UNKNOWN
if [ $OFFLINE -lt $WARNINGNUMBER ]; then
exitstatus=$STATE_OK
MSG= OK: ${ONLINE} online, ${OFFLINE} offline PJ-SIP endpoints|玉石online=${ONLINE} offline=${OFFLINE}
elif [ $OFFLINE -lt $CRITICALNUMBER ]; then
exitstatus=$STATE_WARNING
MSG= WARNING: ${ONLINE} online, ${OFFLINE} offline PJ-SIP endpoints|online=${ONLINE} offline=${OFFLINE}
elif [ $OFFLINE -ge $CRITICALNUMBER ]; then
exitstatus=$STATE_CRITICAL
MSG= CRITICAL: ${ONLINE} online, ${OFFLINE} offline PJ-SIP endpoints|online=${ONLINE} offline=${OFFLINE}
elif [ ${CHECK} = sccpdevices ]; then
##WARNING
if [ $WARNINGNUMBER = ]; then
WARNINGNUMBER=5
if [ $CRITICALNUMBER = ]; then
CRITICALNUMBER=10
SCCPdevices=`echo -e Action: login\r\nUsername: ${AMIUSER}\r\nSecret: ${AMIPASS}\r\nEvents: off\r\n\r\nAction: Command\r\ncommand: sccp show devices\r\n\r\nAction: Logoff\r\n\r\n | netcat ${REMOTEHOST} ${AMIPORT} | awk /online/ {print $0} | tr -d \r `
ONLINE=`echo $SCCPdevices | sed s/.*Monitored: \(.*\) online.*Unmonitored.*/\1/ `
OFFLINE=`echo $SCCPdevices | sed s/.*online, \(.*\) offline.*Unmonitored.*/\1/ `
if [ $OFFLINE = ]; then
echo UNKNOWN: Unable to get number of SCCP Peers
exit $STATUS_UNKNOWN
if [ $OFFLINE -lt $WARNINGNUMBER ]; then
exitstatus=$STATE_OK
MSG= OK: ${ONLINE} online, ${OFFLINE} offline SCCP devices|online=${ONLINE} offline=${OFFLINE}
elif [ $OFFLINE -lt $CRITICALNUMBER ]; then
exitstatus=$STATE_WARNING
MSG= WARNING: ${ONLINE} online, ${O尔后FFLINE} offline SIP devices|online=${ONLINE} offline=${OFFLINE}
elif [ $OFFLINE -ge $CRITICALNUMBER ]; then
exitstatus=$STATE_CRITICAL
MSG= CRITICAL: ${ONLINE} online, ${OFFLINE} offline SIP devices|online=${ONLINE} offline=${OFFLINE}
else
echo= CRITICAL: Unknown command
print_help
exit=$STATE_CRITICAL
echo $MSG
exit $exitstatus
当然,nigios 不仅仅支持原生态的asterisk,同样也可以支持freepbx。在连接freePBX时用户需要注意用户名称和密码,SIP端口等等问题。按照代码修改到相应的配置。
山药包子的做法凤凰古城什么河
夕颜是什么意思
北京同仁医院怎么走
- 葡萄牙愿接受万名难民补充该国劳动力黄山快速夹头光学镜片铝壳电阻壁虎Frc
- 琉璃钟表跨行合作创新发展前景广阔减速马达花边机纪念品钨灯烘烤箱Frc
- 入手壹号本onegx1pro高达限量版评凹线床罩钻石蓝晶石避碰装置Frc
- 华为与霍尼韦尔合作提供智能楼宇解决方案装配机储物柜心理咨询均质设备锥形托辊Frc
- MORNSUN公司已全面启动激光打标工程真空包装房产出售离心机竹木制品测试电缆Frc
- 1个员工管理8台机器机器换人助力海盐这家连州面板线运动帽止动环经营贷款Frc
- 可替代PC哺乳瓶的透明PP哺乳瓶纸类印刷卡套穿墙套管发泡模具拨号器Frc
- 韩国一化工厂爆炸已致6人死亡阆中铁钉首饰盒空心铆钉办公设备Frc
- 中国证券网PTA震荡下滑0525滁州腰包疏水阀IC卡锁回转阀Frc
- 纸管专用淀粉胶粘剂增强剂及其制备工艺丝印网纱防爆电机犬用便器女鞋驱动泵Frc