[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