Assine a Lista Dicas-L
Receba diariamente por email as dicas
de informática publicadas neste site
Para se descadastrar, clique aqui.
Plugin do Nagios para detecção de Erros nas interfaces do Switch 3Com via SNMP.
Colaboração: Jhony Maseto
Data de Publicação: 16 de maio de 2008
Para otimização da rede e melhoria na monitoração proativa, criamos um shell script que captura da MIB dos switchs da 3Com e retorna quais portas estão com problema, assim se você tiver uma placa de rede com problema ligada a um switch gerenciável da 3com é possível descobrir o erro sem precisar acessar a interface WEB do switch. Pode ser útil para quem administra redes com muitos equipamentos como no nosso caso e não tem tempo para ficar olhando de equipamento em equipamento.
Funciona bem com os switches de modelo:
- 3c17300: neste modelo ele captura os erros de CRC Error e colisões no mesmo trap.
- 3c17300A: se o firmware estiver atualizado captura só os CRC Errors.
Segue o código fonte do plugin:
#!/bin/sh
# este plugin faz um teste nos switchs listados
# buscando por erros de colisão e erros físicos nas interfaces "CRC error".
# Autores: Jhony Maseto, Sergio tschá Wanderley.
# Redes - Unochapecó
< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>#
# Copyright (C) 2008 Jhony Maseto, Sergio Wanderley
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program. If not, see
# < http://www.gnu.org/licenses/>.
# For contacting us send mail to redes@unochapeco.edu.br.
help() {
echo " Este plugin utiliza o snmpwallk para recuperar erros na portas dos switchs da 3com, funciona bem com o modelo 3c17300 e 3c17300A "
echo " Para efetuar o teste chame o plugin e o IP do equipamento desejado, exemplo: ./check_switch 192.168.0.10 "
}
Version(){
echo " Check Switch - versão 1.0 "
}
while getopts "hV:" opt;
do
case $opt in
h) help;;
V) Version ;;
*) echo Utilize -h para ajuda ou --help para comandos ;;
esac
done
< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>###
# verifica se o que foi digitado é mesmo um ip IPV4
ip=`echo $1 |egrep '^([0-9]{1,3}\.){3}[0-9]{1,3}$'`
if [ "$ip" == "" ]
then
echo " digite um endereço de IP válido, ou -h para ajuda!!! "
exit 3
else
#verifica se o switch aceita comandos snmp.
/usr/bin/snmpwalk -v1 -c public $1 info &> /dev/null
#testa o retorno do comando para ver se consegue.
retcode=$?
# busca no switch por erros na MIB e compara se é menor que 100.
uso=`/usr/bin/snmpwalk -v1 -c public $1 inErrors | cut -d. -f2 |awk ' $4 > 100 {printf " - Porta: " $1 " Erros: " $4}'`
#retorna os erros para o Nagios recuperar
if [ "$uso" != "" ]
then
echo "WARNING: $uso"
exit 1
elif [ "$uso" = "" -a $retcode -eq 0 ]
then
echo "OK: testei o bagulho, sem erros "
exit 0
elif [ "$uso" = "" -a $retcode -ne 0 ]
then
echo "UNKNOWN: nao consegui testar o bagulho"
exit 3
fi
fi
Referências Adicionais
Referências adicionais sobre os assuntos abordados neste site podem ser encontradas em nossa Bibliografia.





