[GTER] Script monitoramento ONUs
spiderslack
spiderslack at yahoo.com.br
Mon Nov 11 21:57:33 -02 2013
Ola pessoal.
Criei um script em shellscript para monitoramento de ONU em plataforma
GEPON. Esta bem rudimentar se alguém tem nagios e quer utilizar pode
melhorar o script utilizei a MIB da GEPON da furukawa. O problema e que
na MIB ele não trás o MAC então fiz o monitoramento pelo serial. O
shellscript consiste em ler a MIB da GEPON a table fkc16OnuInformation e
depois buscar o Serial na table fkc16OnuStatus com base no OID retornado
da fkc16OnuInformation.
root at apolo:~# snmptable -r 5 -t 90 -v 2c -c public 192.168.1.10
PRIVATE-FK-C16-FUNCTION-MIB::fkc16OnuInformationTable
SNMP table: PRIVATE-FK-C16-FUNCTION-MIB::fkc16OnuInformationTable
fkc16OnuModelName fkc16OnuSerialNumber fkc16OnuOutputOpticalWavelength
fkc16OnuFirmwaveVersion fkc16OnuBootCodeVersion
fkc16OnuPersonalityVersion fkc16OnuApp0Version fkc16OnuApp1Version
fkc16OnuTemperature
FK-ONU-20L 12ON09171284 1310 0xc230
0xc230 f8 0xc230
0xc230 0
FK-ONU-20L 12ON09171295 1310 0xc230
0xc230 f8 0xc230
0xc230 0
FK-ONU-20L 12ON09171319 1310 0xc230
0xc230 f8 0xc230
0xc230 0
FK-ONU-20L 12ON09171309 1310 0xc230
0xc230 f8 0xc230
0xc230 0
FK-ONU-20L 12ON09171294 1310 0xc230
0xc230 f8 0xc230
0xc230 0
FK-ONU-20L 12ON09171315 1310 0xc230
0xc230 f8 0xc230
0xc230 0
root at apolo:~#
root at apolo:~# snmptable -r 5 -t 90 -v 2c -c public 192.168.1.10
PRIVATE-FK-C16-FUNCTION-MIB::fkc16OnuStatusTable
SNMP table: PRIVATE-FK-C16-FUNCTION-MIB::fkc16OnuStatusTable
fkc16OnuPort1Link fkc16OnuPort2Link fkc16OnuPort1State
fkc16OnuPort2State fkc16OnuPort1AutoNego fkc16OnuPort2AutoNego
fkc16OnuPort1SpdDpx fkc16OnuPort2SpdDpx fkc16OnuPort1FlwCtl
fkc16OnuPort2FlwCtl
1 0 1
1 1 1 5 1
0 0
0 0 1
1 0 1 2 1
0 0
0 1 1
1 1 1 2 4
0 0
1 0 1
1 1 1 5 1
0 0
0 0 1
1 0 1 2 1
0 0
1 0 1
1 1 1 5 1
0 0
root at apolo:~#
Para visualização e melhor utilizar o MIB Browser. Para utilizar use
root at apolo:~/scripts_nagios_onu# ./check_onu2 -a 11ON0XXXXXX -b
Porta 1 da ONU desconectada
root at apolo:~/scripts_nagios_onu# ./check_onu2 -a 11ON0XXXXXY -b
Porta 1 da ONU conectada
root at apolo:~/scripts_nagios_onu# ./check_onu2 -a 11ON0XXXXXD -c
Porta 2 da ONU desconectada
root at apolo:~/scripts_nagios_onu#
o parametro -a informa o serial number -b a porta 1 da ONU e -c a porta
2 da ONU
Att.
-------------- next part --------------
#!/bin/bash
#et -x
onu=()
matrix=()
WALK=$(which snmpwalk)
GET=$(which snmpget)
COMMUNITY="public"
CLIENT="192.168.0.10"
VERSAO_SNMP="2c"
ONU_SN=$1
while getopts a:bc OPCAO; do
case "${OPCAO}" in
a) ONU_SN="${OPTARG}" ;;
b) p1="1.1.3." ;;
c) p2="1.1.4." ;;
esac
done
AMOUNT=$($WALK -v $VERSAO_SNMP -c $COMMUNITY $CLIENT .1.3.6.1.4.1.10428.8.1.1.102.1.1.3 | wc -l )
OLTS="1 2 3"
axou=0
q=0
colum=0
row=0
# coletando informacoes da ONU
SAIDA=$( $WALK -v $VERSAO_SNMP -c $COMMUNITY $CLIENT .1.3.6.1.4.1.10428.8.1.1.102.1.1.4 | awk '{ print $1 }' )
for i in $( $WALK -v $VERSAO_SNMP -c $COMMUNITY $CLIENT .1.3.6.1.4.1.10428.8.1.1.102.1.1.4 | awk '{ print $1":"$4 }' )
do
oid=$( echo $i| cut -f 1 -d : )
serial=$( echo $i | cut -f 2 -d : | cut -f 2 -d \" )
if [ $ONU_SN = $serial ]; then
# echo $oid
# echo $serial
matriz[$colum,$row]=$oid
row=$( expr $row + 1 )
matriz[$colum,$row]=$serial
SLOT_ATUAL=$( echo $oid | cut -d . -f 15 )
# echo $SLOT_ATUAL
colum=$( expr $colum + 1 )
row=0
axou=1
fi
#D_SLOT=$( expr $ID_SLOT + 1 )
done
# visulizando dados da ONU oid e serial
#for j in ${matriz[@]}
#do
# echo $j
#done
# Testando as a porta da ONU
#iso.3.6.1.4.1.10428.8.1.1.100.1.1.3.1
#iso.3.6.1.4.1.10428.8.1.1.102.1.1.4.2
#echo "matriz: $matriz"
#OID_PADRAO=$( echo $matriz | sed -e 's/iso.3.6.1.4.1.10428.8.1.1.102.1.1/iso.3.6.1.4.1.10428.8.1.1.100.1.1/' )
OID_PADRAO=$( echo $matriz | sed -e 's/102/100/' )
#OID_PADRAO: iso.3.6.1.4.1.10428.8.1.1.100.1.1.4.2.184.38.212.2.25.232
#echo "OID_PADRAO: $OID_PADRAO"
if [ "$p1" != "" ]; then
OID_PORT1=$( echo $OID_PADRAO | sed -e 's/1.1.4.'$SLOT_ATUAL'/'$p1''$SLOT_ATUAL'/' )
# echo $OID_PORT1
# #OID_PORT1=$( echo $OID_PORT1 | sed -e 's/1.1.3.$SLOT_ATUAL/'$p1'/' )
STATUS_PORTA1=$( $GET -v $VERSAO_SNMP -c $COMMUNITY $CLIENT $OID_PORT1 | awk '{ print $4 }' )
if [ $STATUS_PORTA1 -eq 1 ]; then
echo "Porta 1 da ONU conectada"
axou1=0
else
echo "Porta 1 da ONU desconectada"
axou1=1
fi
fi
#set -x
if [ "$p2" != "" ]; then
OID_PORT2=$( echo $OID_PADRAO | sed -e 's/1.1.4.'$SLOT_ATUAL'/'$p2''$SLOT_ATUAL'/' )
# echo $OID_PORT2
# #OID_PORT2=$( echo $OID_PORT2 | sed -e 's/1.1.4.2/'$p2'/' )
STATUS_PORTA2=$( $GET -v $VERSAO_SNMP -c $COMMUNITY $CLIENT $OID_PORT2 | awk '{ print $4 }' )
if [ $STATUS_PORTA2 -eq 1 ]; then
echo "Porta 2 da ONU conectada"
axou2=0
else
echo "Porta 2 da ONU desconectada"
axou2=1
fi
fi
#echo $OID_PORT1
#echo $OID_PORT2
#exit 0
More information about the gter
mailing list