Sunteți pe pagina 1din 27

TEMA

SCRIPT PARA SNMP


OBJETIVOS
Objetivo General
Conocer la manera de elaborar scripts en el Sistema Operativo Linux para obtener los diferentes
parámetros del protocolo SNMP.

Objetivo Específico
Investigar sobre los comandos que se utilizan para la elaboración de los scripts en el Sistema
Operativo Linux.
Elaborar un script en el Sistema Operativo Linux que permita obtener los diferentes datos que
maneja el protocolo SNMP para su posterior análisis.

JUSTIFICACIÓN
El protocolo SNMP es un protocolo que sirve para hacer gestión a una red, es por eso que existe la necesidad del
estudio y la elaboración de scripts con los que se pueden realizar análisis y estudio de los paquetes que se envían a
través de la red. Así de esta manera se puede mejorar la eficiencia de la misma y el rendimiento de todos sus
componentes.

MARCO TEÓRICO
El Protocolo Simple Network Management Protocol (SNMP) es un protocolo de la capa de aplicación que facilita el
intercambio de información de administración entre dispositivos de red, es decir, realiza gestión de red esto es un
conjunto de estructuras y primitivas que permiten tener datos concretos del tráfico que se produce en la red, así
como quien lo produce. Es parte de la familia de protocolos TCP/IP. SNMP permite a los administradores supervisar
el funcionamiento de la red, buscar y resolver sus problemas, y planear su crecimiento.

Comandos SNMP para Sistema Operativo Linux


Existen varios comandos que se utilizarán para realizar el script de acuerdo a las necesidades, entre estos tenemos:
clear.- limpia la pantalla.
echo.- muestra lo que escribamos a continuación entre comillas dobles.
read.- lee la respuesta del usuario,
case.- permite realizar de una forma bastante sencilla, varios if anidados.
$.- Se utiliza para asignar los valores de variables a los números que se manejan en el menú.
while/do.- While se usa para repetir un conjunto de comandos/instrucciones dependiendo de si se cumple o no la
condición. La condiciones que se pueden poner en el while son con el comando test , poniendo un true ( poniendo
un true en el while se crea un bucle infinito) o poner un comando con comillas invertidas. El break se pone solo si se
desea salir bruscamente del bucle.
snmpget.- El comando snmpget se puede utilizar para obtener datos de un host remoto dado su nombre de host, la
información y un OID.
# snmpget -v 2c -c public localhost OID
snmpwalk.- El comando snmpwalk es usado para leer todos los valores de un agente SNMP especificado por el
hostname. Community especifica la comunidad lectora para el agente. Un object_id nulo se toma como la raíz del
arbol de los objetos SNMP y todos los objetos por debajo de ese arbol son devueltos como una matriz. Si object_id
es especificado, todos los objetos SNMP por debajo de object_id son devueltos.
#snmpwalk -v 2c -c public localhost OID.
snmptrap.- permite enviar notificaciones del agente al gestor, sin peticiones del gestor.
function.- es el término para describir una secuencia de órdenes que hacen una tarea específica de una aplicación
más grande. Es la forma en la que más me gusta programar, modulando todo en partes pequeñas para después
obtener una mayor, con lo cual el programar algo se hace fácil y divertido.
function nombreFuncion (){
comando1
comando2

[ return codigoSalida ]
}
También se especifica sin poner function, pero puede llegar a dar problemas así que se recomienda ponerlo.
>.- Crea un archive de texto en el que almacena la información por cada vez que se ejecuta el programa.
>>.- Guarda en el mismo archivo la información que se va generando cada vez que se ejecuta un programa.
2>.- Permite enviar los mensaje de error a un archivo de texto.

EJECUCIÓN DEL PROGRAMA


# *********************************************************
# ** INGENIERÍA ELECTRONICA Y REDES DE LA INFORMACIÓN **
# ** Gestión de Redes **
# ** Deber: Script de opciones snmp **
# ** Integrantes: **
# ** * Guanoluisa Carina **
# ** * Montoya Oscar **
# ** * Villenas Alejandra **
# *********************************************************

#!/bin/sh

clear
opcion="0"
h=$1 #host
p=$2 #puerto
v=$3 #version
o1=$4 #OID
o2=$5
o3=$6
o4=$7
o5=$8
o6=$9
# --------------------------------------------------------------
------------> FUNCIONES
function reporwalk() {
fec=`date`
echo "========================== REPORTE
============================" >> ReporteConsulta.txt
echo "La fecha y hora de la consulta es: $fec" >>
ReporteConsulta.txt
echo "El tipo de operacion es: SNMPWALK" >> ReporteConsulta.txt
echo "El host consultado es: $h" >> ReporteConsulta.txt
echo " " >> ReporteConsulta.txt
echo "RESULTADO: " >> ReporteConsulta.txt
}
# ----------------------------------------------

function reporget() {
fec=`date`
echo "========================== REPORTE
============================" >> ReporteConsulta.txt
echo "La fecha y hora de la consulta es: $fec" >>
ReporteConsulta.txt
echo "El tipo de operacion es: SNMPGET" >> ReporteConsulta.txt
echo "El host consultado es: $h" >> ReporteConsulta.txt
echo " " >> ReporteConsulta.txt
echo "RESULTADO: " >> ReporteConsulta.txt
}
# ----------------------------------------------

function reporgetnext() {
fec=`date`
echo "========================== REPORTE
============================" >> ReporteConsulta.txt
echo "La fecha y hora de la consulta es: $fec" >>
ReporteConsulta.txt
echo "El tipo de operacion es: SNMPGETNEXT" >>
ReporteConsulta.txt
echo "El host consultado es: $h" >> ReporteConsulta.txt
echo " " >> ReporteConsulta.txt
echo "RESULTADO: " >> ReporteConsulta.txt
}
# ----------------------------------------------

function reporset() {
fec=`date`
echo "========================== REPORTE
============================" >> ReporteConsulta.txt
echo "La fecha y hora de la consulta es: $fec" >>
ReporteConsulta.txt
echo "El tipo de operacion es: SNMPSET" >> ReporteConsulta.txt
echo "El host consultado es: $h" >> ReporteConsulta.txt
}
# ----------------------------------------------
function reporwalkerror() {
fec=`date`
echo "========================== REPORTE
============================" >> ReporteError.txt
echo "La fecha y hora de la consulta es: $fec" >>
ReporteError.txt
echo "El tipo de operacion es: SNMPWALK" >> ReporteError.txt
echo "El host consultado es: $h" >> ReporteError.txt
echo " " >> ReporteError.txt
echo "RESULTADO: " >> ReporteError.txt
}
# ----------------------------------------------
function reporgeterror() {
fec=`date`
echo "========================== REPORTE
============================" >> ReporteError.txt
echo "La fecha y hora de la consulta es: $fec" >>
ReporteError.txt
echo "El tipo de operacion es: SNMPGET" >> ReporteError.txt
echo "El host consultado es: $h" >> ReporteError.txt
echo " " >> ReporteError.txt
echo "RESULTADO: " >> ReporteError.txt
}
# ----------------------------------------------
function reporgetnexterror() {
fec=`date`
echo "========================== REPORTE
============================" >> ReporteError.txt
echo "La fecha y hora de la consulta es: $fec" >>
ReporteError.txt
echo "El tipo de operacion es: SNMPGETNEXT" >> ReporteError.txt
echo "El host consultado es: $h" >> ReporteError.txt
echo " " >> ReporteError.txt
echo "RESULTADO: " >> ReporteError.txt
}
# ----------------------------------------------
function reporseterror() {
fec=`date`
echo "========================== REPORTE
============================" >> ReporteError.txt
echo "La fecha y hora de la consulta es: $fec" >>
ReporteError.txt
echo "El tipo de operacion es: SNMPSET" >> ReporteError.txt
echo "El host consultado es: $h" >> ReporteError.txt
}
# --------------------------------------------------------------
-----------------------------------------
par="$#" #almaceno el número de parametros ingresados al
script
#echo se le han pasado $par arguments

service snmpd restart # reinicio el servicio snmpd


clear
while [ $opcion -le 6 ]
fech=`date`
do
# MENU DE OPCIONES SNMP
echo "GESTION DE REDES"
echo "FECHA ACTUAL: $fech"
echo "Usted ha ingresado con: sh prog1.sh $h $p $v $o1 $o2
$o3 $o4 $o5 $o6"
printf "\n"
echo "------------ MENU DE OPCIONES SNMP -------------"
echo "1. Consulta snmpwalk."
echo "2. Consulta snmpget."
echo "3. Consulta snmpset."
echo "4. Consulta trap."
echo "5. Consulta snmpgetnext."
echo "6. Salir."
echo "Favor elija una opcion: "
read opcion
case $opcion in

1)
#
================================================================
=
echo "OPCION SELECCIONADA: SNMPWALK"
# -------------------------------------> OID 6
if [ $par = 9 ]
then
snmpwalk -v $v -c public $h $o6 > zom.txt # Creo el
archivo temporal para analizar error
aux=`cat zom.txt | cut -d " " -f 3 | grep "No"` #
Analizo el temporal y verifico si hay error o no.

if [ $aux = No ] # Verifico si existe error o no en el


comando ejecutado.
then
reporwalkerror # llamo a la funcion que me
imprime la cabecera del reporte de error WALK
echo "El OID consultado es: " >>
ReporteError.txt
snmptranslate -On -IR $o6 >>
ReporteError.txt # me da el OID consultado
snmpwalk -v $v -c public $h $o6 >>
ReporteError.txt # ejecuto el comando y envio resultado alreporte
de error
echo " " >> ReporteError.txt
clear
else
reporwalk # llamo a la funcion que me imprime
la cabecera del reporte de consulta WALK
echo "El OID consultado es: " >>
ReporteConsulta.txt
snmptranslate -On -IR $o6 >>
ReporteConsulta.txt # me da el OID consultado
snmpwalk -v $v -c public $h $o6 >>
ReporteConsulta.txt # ejecuto el comando y envio resultado
alreporte de consulta
echo " " >> ReporteConsulta.txt
clear
fi
fi
# -------------------------------------> OID 5
if [ $par -ge 8 -a $par -le 9 ]
then
snmpwalk -v $v -c public $h $o5 > zom.txt
aux=`cat zom.txt | cut -d " " -f 3 | grep "No"`
#echo 5$aux
if [ $aux = "No" ]
then
reporwalkerror
echo "El OID consultado NO es: " >>
ReporteError.txt
snmptranslate -On -IR $o5 >> ReporteError.txt
snmpwalk -v $v -c public $h $o5 >>
ReporteError.txt
echo " " >> ReporteError.txt
clear
else
reporwalk
echo "El OID consultado SI es: " >>
ReporteConsulta.txt
snmptranslate -On -IR $o5 >>
ReporteConsulta.txt
snmpwalk -v $v -c public $h $o5 >>
ReporteConsulta.txt
echo " " >> ReporteConsulta.txt
clear
fi
fi
# -------------------------------------> OID 4
if [ $par -ge 7 -a $par -le 9 ]
then
snmpwalk -v $v -c public $h $o4 > zom.txt
aux=`cat zom.txt | cut -d " " -f 3 | grep "No"`
#echo 4$aux
if [ $aux = "No" ]
then
reporwalkerror
echo "El OID consultado es: " >>
ReporteError.txt
snmptranslate -On -IR $o4 >> ReporteError.txt
snmpwalk -v $v -c public $h $o4 >>
ReporteError.txt
echo " " >> ReporteError.txt
clear
else
reporwalk
echo "El OID consultado es: " >>
ReporteConsulta.txt
snmptranslate -On -IR $o4 >>
ReporteConsulta.txt
snmpwalk -v $v -c public $h $o4 >>
ReporteConsulta.txt
echo " " >> ReporteConsulta.txt
clear
fi
fi
# -------------------------------------> OID 3
if [ $par -ge 6 -a $par -le 9 ]
then
snmpwalk -v $v -c public $h $o3 > zom.txt
aux=`cat zom.txt | cut -d " " -f 3 | grep "No"`
#echo 3$aux
if [ $aux = "No" ]
then
reporwalkerror
echo "El OID consultado es: " >>
ReporteError.txt
snmptranslate -On -IR $o3 >> ReporteError.txt
snmpwalk -v $v -c public $h $o3 >>
ReporteError.txt
echo " " >> ReporteError.txt
clear
else
reporwalk
echo "El OID consultado es: " >>
ReporteConsulta.txt
snmptranslate -On -IR $o3 >>
ReporteConsulta.txt
snmpwalk -v $v -c public $h $o3 >>
ReporteConsulta.txt
echo " " >> ReporteConsulta.txt
clear
fi
fi
# -------------------------------------> OID 2
if [ $par -ge 5 -a $par -le 9 ]
then
snmpwalk -v $v -c public $h $o2 > zom.txt
aux=`cat zom.txt | cut -d " " -f 3 | grep "No"`
#echo 2$aux
if [ $aux = "No" ]
then
reporwalkerror
echo "El OID consultado es: " >>
ReporteError.txt
snmptranslate -On -IR $o2 >> ReporteError.txt
snmpwalk -v $v -c public $h $o2 >>
ReportError.txt
echo " " >> ReporteError.txt
clear
else
reporwalk
echo "El OID consultado es: " >>
ReporteConsulta.txt
snmptranslate -On -IR $o2 >>
ReporteConsulta.txt
snmpwalk -v $v -c public $h $o2 >>
ReporteConsulta.txt
echo " " >> ReporteConsulta.txt
clear
fi
fi
# -------------------------------------> OID 1
if [ $par -ge 4 -a $par -le 9 ]
then
snmpwalk -v $v -c public $h $o1 > zom.txt
aux=`cat zom.txt | cut -d " " -f 3 | grep "No"`
#echo $aux
if [ $aux = "No" ]
then
reporwalkerror
echo "El OID consultado es: " >>
ReporteError.txt
snmptranslate -On -IR $o1 >> ReporteError.txt
snmpwalk -v $v -c public $h $o1 >>
ReporteError.txt
echo " " >> ReporteError.txt
clear
else
reporwalk
echo "El OID consultado es: " >>
ReporteConsulta.txt
snmptranslate -On -IR $o1 >>
ReporteConsulta.txt
snmpwalk -v $v -c public $h $o1 >>
ReporteConsulta.txt
echo " " >> ReporteConsulta.txt
clear
fi
fi
rm zom.txt # elimino el archivo temporal con el que vimos
si existe o no error.
# ---------------------------------------------------------
--------

echo " " >> ReporteConsulta.txt


echo " " >> ReporteConsulta.txt
echo "HA FINALIZADO LA CONSULTA SNMPWALK"
#
================================================================
;;

2)
#
================================================================
=
echo "OPCION SELECCIONADA: SNMPGET"
# -------------------------------------> OID 6
if [ $par = 9 ]
then
snmpget -v $v -c public $h $o6 > zom.txt
aux=`cat zom.txt | cut -d " " -f 3 | grep "No"`
if [ $aux = "No" ]
then
reporgeterror
echo "El OID consultado es: " >> ReporteError.txt
snmptranslate -On -IR $o6 >> ReporteError.txt
snmpget -v $v -c public $h $o6 >>
ReporteError.txt
echo " " >> ReporteError.txt
clear
else
reporget
echo "El OID consultado es: " >> ReporteConsulta.txt
snmptranslate -On -IR $o6 >> ReporteConsulta.txt
snmpget -v $v -c public $h $o6 >>
ReporteConsulta.txt
echo " " >> ReporteConsulta.txt
clear
fi
fi
# -------------------------------------> OID 5
if [ $par -ge 8 -a $par -le 9 ]
then
snmpget -v $v -c public $h $o5 > zom.txt
aux=`cat zom.txt | cut -d " " -f 3 | grep "No"`
if [ $aux = "No" ]
then
reporgeterror
echo "El OID consultado es: " >> ReporteError.txt
snmptranslate -On -IR $o5 >> ReporteError.txt
snmpget -v $v -c public $h $o5 >>
ReporteError.txt
echo " " >> ReporteError.txt
clear
else
reporget
echo "El OID consultado es: " >>
ReporteConsulta.txt
snmptranslate -On -IR $o5 >> ReporteConsulta.txt
snmpget -v $v -c public $h $o5 >>
ReporteConsulta.txt
echo " " >> ReporteConsulta.txt
clear
fi
fi
# -------------------------------------> OID 4
if [ $par -ge 7 -a $par -le 9 ]
then
snmpget -v $v -c public $h $o4 > zom.txt
aux=`cat zom.txt | cut -d " " -f 3 | grep "No"`
if [ $aux = "No" ]
then
reporgeterror
echo "El OID consultado es: " >> ReporteError.txt
snmptranslate -On -IR $o4 >> ReporteError.txt
snmpget -v $v -c public $h $o4 >>
ReporteError.txt
echo " " >> ReporteError.txt
clear
else
reporget
echo "El OID consultado es: " >>
ReporteConsulta.txt
snmptranslate -On -IR $o4 >> ReporteConsulta.txt
snmpget -v $v -c public $h $o4 >>
ReporteConsulta.txt
echo " " >> ReporteConsulta.txt
clear
fi
fi
# -------------------------------------> OID 3
if [ $par -ge 6 -a $par -le 9 ]
then
snmpget -v $v -c public $h $o3 > zom.txt
aux=`cat zom.txt | cut -d " " -f 3 | grep "No"`
if [ $aux = "No" ]
then
reporgeterror
echo "El OID consultado es: " >> ReporteError.txt
snmptranslate -On -IR $o3 >> ReporteError.txt
snmpget -v $v -c public $h $o3 >>
ReporteError.txt
echo " " >> ReporteError.txt
clear
else
reporget
echo "El OID consultado es: " >>
ReporteConsulta.txt
snmptranslate -On -IR $o3 >> ReporteConsulta.txt
snmpget -v $v -c public $h $o3 >>
ReporteConsulta.txt
echo " " >> ReporteConsulta.txt
clear
fi
fi
# -------------------------------------> OID 2
if [ $par -ge 5 -a $par -le 9 ]
then
snmpget -v $v -c public $h $o2 > zom.txt
aux=`cat zom.txt | cut -d " " -f 3 | grep "No"`
if [ $aux = "No" ]
then
reporgeterror
echo "El OID consultado es: " >> ReporteError.txt
snmptranslate -On -IR $o2 >> ReporteError.txt
snmpget -v $v -c public $h $o2 >>
ReporteError.txt
echo " " >> ReporteError.txt
clear
else
reporget
echo "El OID consultado es: " >>
ReporteConsulta.txt
snmptranslate -On -IR $o2 >> ReporteConsulta.txt
snmpget -v $v -c public $h $o2 >>
ReporteConsulta.txt
echo " " >> ReporteConsulta.txt
clear
fi
fi
# -------------------------------------> OID 1
if [ $par -ge 4 -a $par -le 9 ]
then
snmpget -v $v -c public $h $o1 > zom.txt
aux=`cat zom.txt | cut -d " " -f 3 | grep "No"`
if [ $aux = "No" ]
then
reporgeterror
echo "El OID consultado es: " >> ReporteError.txt
snmptranslate -On -IR $o1 >> ReporteError.txt
snmpget -v $v -c public $h $o1 >>
ReporteError.txt
echo " " >> ReporteError.txt
clear
else
reporget
echo "El OID consultado es: " >>
ReporteConsulta.txt
snmptranslate -On -IR $o1 >> ReporteConsulta.txt
snmpget -v $v -c public $h $o1 >>
ReporteConsulta.txt
echo " " >> ReporteConsulta.txt
clear
fi
fi
rm zom.txt
# ---------------------------------------------------------
--------

echo " " >> ReporteConsulta.txt


echo " " >> ReporteConsulta.txt
echo "HA FINALIZADO LA CONSULTA SNMPGET"
#
================================================================
=
;;

3)
echo "OPCION CONSULTA SNMPSET ----"
fec=`date`
echo " "
#------------------------------------------------> OID 6
if [ $par = 9 ]
then
echo "Ingrese el tipo de dato para parámetro $o6 : "
echo "i-INTEGER; u-UNSIGNED; s-STRING; x-HEX STRING; d-
DECIMAL STRING; n-NULLOBJ; o-OBJID; t-TIMETICKS; a-IPADDRESS; b-
BITS"
read tipo # ingreso por teclado el tipo de valor que
necesito ingresar.
echo "Ingrese el valor a asignar: "
read valor # ingreso por teclado el valor.
echo "Reiniciando servicio snmpd ...."
service snmpd restart # reinicio el servicio snmpd
clear
snmpset -v $v -c public $h $o6 $tipo $valor 2> zom.txt
# creo el archivo temporal para verificar error
aux1=`cat zom.txt | cut -d " " -f 1 | grep "Error"` #
filtro un tipo de error - Error in packet
aux2=`cat zom.txt | cut -d " " -f 2 | grep "Bad"` #
filtro un tipo de error - Bad value
#echo mi1 $aux1
#echo mi2 $aux2
if [ $aux1 = "Error" -o $aux2 = "Bad" ] #verifico si existe
uno de los dos tipos de error.
then
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::
reporseterror
echo "El OID consultado es: " >> ReporteError.txt
snmptranslate -On -IR $o6 >> ReporteError.txt
echo "El tipo de valor ingresado es: $tipo" >>
ReporteError.txt
echo "El valor ingresado es: $valor" >>
ReporteError.txt
echo " " >> ReporteError.txt
echo "RESULTADO: " >> ReporteError.txt
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::
snmpset -v $v -c public $h $o6 $tipo $valor 2>>
ReporteError.txt

#:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::
else
reporset
echo "El OID consultado es: " >> ReporteConsulta.txt
snmptranslate -On -IR $o6 >> ReporteConsulta.txt
echo "El tipo de valor ingresado es: $tipo" >>
ReporteConsulta.txt
echo "El valor ingresado es: $valor" >>
ReporteConsulta.txt
echo " " >> ReporteConsulta.txt
echo "RESULTADO: " >> ReporteConsulta.txt

#:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::
snmpset -v $v -c public $h $o6 $tipo $valor >>
ReporteConsulta.txt

#:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::
clear
fi
fi
#------------------------------------------------> OID 5
if [ $par -ge 8 -a $par -le 9 ]
then
echo "Ingrese el tipo de dato para parámetro $o5 : "
echo "i-INTEGER; u-UNSIGNED; s-STRING; x-HEX STRING; d-
DECIMAL STRING; n-NULLOBJ; o-OBJID; t-TIMETICKS; a-IPADDRESS; b-
BITS"
read tipo
echo "Ingrese el valor a asignar: "
read valor
echo "Reiniciando servicio snmpd ...."
service snmpd restart
clear
snmpset -v $v -c public $h $o5 $tipo $valor 2> zom.txt
aux1=`cat zom.txt | cut -d " " -f 1 | grep "Error"`
aux2=`cat zom.txt | cut -d " " -f 2 | grep "Bad"`
#echo mi1 $aux1
#echo mi2 $aux2
if [ $aux1 = "Error" -o $aux2 = "Bad" ]
then
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::
reporseterror
echo "El OID consultado es: " >> ReporteError.txt
snmptranslate -On -IR $o5 >> ReporteError.txt
echo "El tipo de valor ingresado es: $tipo" >>
ReporteError.txt
echo "El valor ingresado es: $valor" >>
ReporteError.txt
echo " " >> ReporteError.txt
echo "RESULTADO: " >> ReporteError.txt
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::
snmpset -v $v -c public $h $o5 $tipo $valor 2>>
ReporteError.txt

#:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::
else
reporset
echo "El OID consultado es: " >> ReporteConsulta.txt
snmptranslate -On -IR $o5 >> ReporteConsulta.txt
echo "El tipo de valor ingresado es: $tipo" >>
ReporteConsulta.txt
echo "El valor ingresado es: $valor" >>
ReporteConsulta.txt
echo " " >> ReporteConsulta.txt
echo "RESULTADO: " >> ReporteConsulta.txt

#:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::
snmpset -v $v -c public $h $o5 $tipo $valor >>
ReporteConsulta.txt

#:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::
clear
fi
fi
#------------------------------------------------> OID 4
if [ $par -ge 7 -a $par -le 9 ]
then
echo "Ingrese el tipo de dato para parámetro $o4 : "
echo "i-INTEGER; u-UNSIGNED; s-STRING; x-HEX STRING; d-
DECIMAL STRING; n-NULLOBJ; o-OBJID; t-TIMETICKS; a-IPADDRESS; b-
BITS"
read tipo
echo "Ingrese el valor a asignar: "
read valor
echo "Reiniciando servicio snmpd ...."
service snmpd restart
clear
snmpset -v $v -c public $h $o4 $tipo $valor 2> zom.txt
aux1=`cat zom.txt | cut -d " " -f 1 | grep "Error"`
aux2=`cat zom.txt | cut -d " " -f 2 | grep "Bad"`
#echo mi1 $aux1
#echo mi2 $aux2
if [ $aux1 = "Error" -o $aux2 = "Bad" ]
then
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::
reporseterror
echo "El OID consultado es: " >> ReporteError.txt
snmptranslate -On -IR $o4 >> ReporteError.txt
echo "El tipo de valor ingresado es: $tipo" >>
ReporteError.txt
echo "El valor ingresado es: $valor" >>
ReporteError.txt
echo " " >> ReporteError.txt
echo "RESULTADO: " >> ReporteError.txt
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::
snmpset -v $v -c public $h $o4 $tipo $valor 2>>
ReporteError.txt

#:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::
else
reporset
echo "El OID consultado es: " >> ReporteConsulta.txt
snmptranslate -On -IR $o4 >> ReporteConsulta.txt
echo "El tipo de valor ingresado es: $tipo" >>
ReporteConsulta.txt
echo "El valor ingresado es: $valor" >>
ReporteConsulta.txt
echo " " >> ReporteConsulta.txt
echo "RESULTADO: " >> ReporteConsulta.txt

#:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::
snmpset -v $v -c public $h $o4 $tipo $valor >>
ReporteConsulta.txt

#:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::
clear
fi
fi
#------------------------------------------------> OID 3
if [ $par -ge 6 -a $par -le 9 ]
then
echo "Ingrese el tipo de dato para parámetro $o3 : "
echo "i-INTEGER; u-UNSIGNED; s-STRING; x-HEX STRING; d-
DECIMAL STRING; n-NULLOBJ; o-OBJID; t-TIMETICKS; a-IPADDRESS; b-
BITS"
read tipo
echo "Ingrese el valor a asignar: "
read valor
echo "Reiniciando servicio snmpd ...."
service snmpd restart
clear
snmpset -v $v -c public $h $o3 $tipo $valor 2> zom.txt
aux1=`cat zom.txt | cut -d " " -f 1 | grep "Error"`
aux2=`cat zom.txt | cut -d " " -f 2 | grep "Bad"`
#echo mi1 $aux1
#echo mi2 $aux2
if [ $aux1 = "Error" -o $aux2 = "Bad" ]
then
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::
reporseterror
echo "El OID consultado es: " >> ReporteError.txt
snmptranslate -On -IR $o3 >> ReporteError.txt
echo "El tipo de valor ingresado es: $tipo" >>
ReporteError.txt
echo "El valor ingresado es: $valor" >>
ReporteError.txt
echo " " >> ReporteError.txt
echo "RESULTADO: " >> ReporteError.txt
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::
snmpset -v $v -c public $h $o3 $tipo $valor 2>>
ReporteError.txt

#:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::
else
reporset
echo "El OID consultado es: " >> ReporteConsulta.txt
snmptranslate -On -IR $o3 >> ReporteConsulta.txt
echo "El tipo de valor ingresado es: $tipo" >>
ReporteConsulta.txt
echo "El valor ingresado es: $valor" >>
ReporteConsulta.txt
echo " " >> ReporteConsulta.txt
echo "RESULTADO: " >> ReporteConsulta.txt

#:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::
snmpset -v $v -c public $h $o3 $tipo $valor >>
ReporteConsulta.txt
#:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::
clear
fi
fi
#------------------------------------------------> OID 2
if [ $par -ge 5 -a $par -le 9 ]
then
echo "Ingrese el tipo de dato para parámetro $o2 : "
echo "i-INTEGER; u-UNSIGNED; s-STRING; x-HEX STRING; d-
DECIMAL STRING; n-NULLOBJ; o-OBJID; t-TIMETICKS; a-IPADDRESS; b-
BITS"
read tipo
echo "Ingrese el valor a asignar: "
read valor
echo "Reiniciando servicio snmpd ...."
service snmpd restart
clear
snmpset -v $v -c public $h $o2 $tipo $valor 2> zom.txt
aux1=`cat zom.txt | cut -d " " -f 1 | grep "Error"`
aux2=`cat zom.txt | cut -d " " -f 2 | grep "Bad"`
#echo mi1 $aux1
#echo mi2 $aux2
if [ $aux1 = "Error" -o $aux2 = "Bad" ]
then
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::
reporseterror
echo "El OID consultado es: " >> ReporteError.txt
snmptranslate -On -IR $o2 >> ReporteError.txt
echo "El tipo de valor ingresado es: $tipo" >>
ReporteError.txt
echo "El valor ingresado es: $valor" >>
ReporteError.txt
echo " " >> ReporteError.txt
echo "RESULTADO: " >> ReporteError.txt
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::
snmpset -v $v -c public $h $o2 $tipo $valor 2>>
ReporteError.txt

#:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::
else
reporset
echo "El OID consultado es: " >> ReporteConsulta.txt
snmptranslate -On -IR $o2 >> ReporteConsulta.txt
echo "El tipo de valor ingresado es: $tipo" >>
ReporteConsulta.txt
echo "El valor ingresado es: $valor" >>
ReporteConsulta.txt
echo " " >> ReporteConsulta.txt
echo "RESULTADO: " >> ReporteConsulta.txt
#:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::
snmpset -v $v -c public $h $o2 $tipo $valor >>
ReporteConsulta.txt

#:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::
clear
fi
fi
#------------------------------------------------> OID 1
if [ $par -ge 4 -a $par -le 9 ]
then
echo "Ingrese el tipo de dato para parámetro $o1 : "
echo "i-INTEGER; u-UNSIGNED; s-STRING; x-HEX STRING; d-
DECIMAL STRING; n-NULLOBJ; o-OBJID; t-TIMETICKS; a-IPADDRESS; b-
BITS"
read tipo
echo "Ingrese el valor a asignar: "
read valor
echo "Reiniciando servicio snmpd ...."
service snmpd restart
clear
snmpset -v $v -c public $h $o2 $tipo $valor 2> zom.txt
aux1=`cat zom.txt | cut -d " " -f 1 | grep "Error"`
aux2=`cat zom.txt | cut -d " " -f 2 | grep "Bad"`
#echo mi1 $aux1
#echo mi2 $aux2
if [ $aux1 = "Error" -o $aux2 = "Bad" ]
then
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::
reporseterror
echo "El OID consultado es: " >> ReporteError.txt
snmptranslate -On -IR $o1 >> ReporteError.txt
echo "El tipo de valor ingresado es: $tipo" >>
ReporteError.txt
echo "El valor ingresado es: $valor" >>
ReporteError.txt
echo " " >> ReporteError.txt
echo "RESULTADO: " >> ReporteError.txt
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::
snmpset -v $v -c public $h $o1 $tipo $valor 2>>
ReporteError.txt

#:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::
else
reporset
echo "El OID consultado es: " >> ReporteConsulta.txt
snmptranslate -On -IR $o1 >> ReporteConsulta.txt
echo "El tipo de valor ingresado es: $tipo" >>
ReporteConsulta.txt
echo "El valor ingresado es: $valor" >>
ReporteConsulta.txt
echo " " >> ReporteConsulta.txt
echo "RESULTADO: " >> ReporteConsulta.txt

#:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::
snmpset -v $v -c public $h $o1 $tipo $valor >>
ReporteConsulta.txt

#:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::
clear
fi
fi
rm zom.txt
echo "FIN DE CONSULTA SNMPSET"
;;

4)
echo "OPCION 4 ----"
clear
echo .
echo .
snmptrapd -f -Le -F "HOSTANME: %A %a\n TIPO TRAP: %W.%q\n
FECHA: %l:%m:%y %h:%j\n Enterprise: %N"

# se ejecuta el demonio snmptrapd. le ponemos parametros


adicionales para obtener el formato con las opciones deseadas.
# -f ---->
# -Le ----> Mostrar en pantalla los resultados
# -F ----> utiliza el formato siguiente como cadena de
texto

# ETIQUETAS RESULTADO
# %A -----> nombre de host del agente
# %a -----> direccion IP
# %W -----> tipo de trap generica
# %q -----> tipo de trap especifica
# %l -----> dÃa
# %m -----> mes
# %y -----> año
# %h -----> hora
# %j -----> minuto
# %N -----> enterprise

;;

5)
#
================================================================
=
echo "OPCION SELECCIONADA: SNMPGETNEXT"
# -------------------------------------> OID 6
if [ $par = 9 ]
then
snmpgetnext -v $v -c public $h $o6 > zom.txt
aux=`cat zom.txt | cut -d " " -f 3 | grep "No"`
if [ $aux = "No" ]
then
reporgetnexterror
echo "El OID consultado es: " >> ReporteError.txt
snmptranslate -On -IR $o6 >> ReporteError.txt
snmpgetnext -v $v -c public $h $o6 >>
ReporteError.txt
echo " " >> ReporteError.txt
clear
else
reporgetnext
echo "El OID consultado es: " >> ReporteConsulta.txt
snmptranslate -On -IR $o6 >> ReporteConsulta.txt
snmpgetnext -v $v -c public $h $o6 >>
ReporteConsulta.txt
echo " " >> ReporteConsulta.txt
clear
fi
fi
# -------------------------------------> OID 5
if [ $par -ge 8 -a $par -le 9 ]
then
snmpgetnext -v $v -c public $h $o5 > zom.txt
aux=`cat zom.txt | cut -d " " -f 3 | grep "No"`
if [ $aux = "No" ]
then
reporgetnexterror
echo "El OID consultado es: " >> ReporteError.txt
snmptranslate -On -IR $o5 >> ReporteError.txt
snmpgetnext -v $v -c public $h $o5 >>
ReporteError.txt
echo " " >> ReporteError.txt
clear
else
reporgetnext
echo "El OID consultado es: " >>
ReporteConsulta.txt
snmptranslate -On -IR $o5 >> ReporteConsulta.txt
snmpgetnext -v $v -c public $h $o5 >>
ReporteConsulta.txt
echo " " >> ReporteConsulta.txt
clear
fi
fi
# -------------------------------------> OID 4
if [ $par -ge 7 -a $par -le 9 ]
then
snmpgetnext -v $v -c public $h $o4 > zom.txt
aux=`cat zom.txt | cut -d " " -f 3 | grep "No"`
if [ $aux = "No" ]
then
reporgetnexterror
echo "El OID consultado es: " >> ReporteError.txt
snmptranslate -On -IR $o4 >> ReporteError.txt
snmpgetnext -v $v -c public $h $o4 >>
ReporteError.txt
echo " " >> ReporteError.txt
clear
else
reporgetnext
echo "El OID consultado es: " >>
ReporteConsulta.txt
snmptranslate -On -IR $o4 >> ReporteConsulta.txt
snmpgetnext -v $v -c public $h $o4 >>
ReporteConsulta.txt
echo " " >> ReporteConsulta.txt
clear
fi
fi
# -------------------------------------> OID 3
if [ $par -ge 6 -a $par -le 9 ]
then
snmpgetnext -v $v -c public $h $o3 > zom.txt
aux=`cat zom.txt | cut -d " " -f 3 | grep "No"`
if [ $aux = "No" ]
then
reporgetnexterror
echo "El OID consultado es: " >> ReporteError.txt
snmptranslate -On -IR $o3 >> ReporteError.txt
snmpgetnext -v $v -c public $h $o3 >>
ReporteError.txt
echo " " >> ReporteError.txt
clear
else
reporgetnext
echo "El OID consultado es: " >>
ReporteConsulta.txt
snmptranslate -On -IR $o3 >> ReporteConsulta.txt
snmpgetnext -v $v -c public $h $o3 >>
ReporteConsulta.txt
echo " " >> ReporteConsulta.txt
clear
fi
fi
# -------------------------------------> OID 2
if [ $par -ge 5 -a $par -le 9 ]
then
snmpgetnext -v $v -c public $h $o2 > zom.txt
aux=`cat zom.txt | cut -d " " -f 3 | grep "No"`
if [ $aux = "No" ]
then
reporgetnexterror
echo "El OID consultado es: " >> ReporteError.txt
snmptranslate -On -IR $o2 >> ReporteError.txt
snmpgetnext -v $v -c public $h $o2 >>
ReporteError.txt
echo " " >> ReporteError.txt
clear
else
reporgetnext
echo "El OID consultado es: " >>
ReporteConsulta.txt
snmptranslate -On -IR $o2 >> ReporteConsulta.txt
snmpgetnext -v $v -c public $h $o2 >>
ReporteConsulta.txt
echo " " >> ReporteConsulta.txt
clear
fi
fi
# -------------------------------------> OID 1
if [ $par -ge 4 -a $par -le 9 ]
then
snmpgetnext -v $v -c public $h $o1 > zom.txt
aux=`cat zom.txt | cut -d " " -f 3 | grep "No"`
if [ $aux = "No" ]
then
reporgetnexterror
echo "El OID consultado es: " >> ReporteError.txt
snmptranslate -On -IR $o1 >> ReporteError.txt
snmpgetnext -v $v -c public $h $o1 >>
ReporteError.txt
echo " " >> ReporteError.txt
clear
else
reporgetnext
echo "El OID consultado es: " >>
ReporteConsulta.txt
snmptranslate -On -IR $o1 >> ReporteConsulta.txt
snmpgetnext -v $v -c public $h $o1 >>
ReporteConsulta.txt
echo " " >> ReporteConsulta.txt
clear
fi
fi
rm zom.txt
# ---------------------------------------------------------
--------

echo " " >> ReporteConsulta.txt


echo " " >> ReporteConsulta.txt
echo "HA FINALIZADO LA CONSULTA SNMPGETNEXT"
#
================================================================
=
;;

6)
clear
echo "OPCION SALIR"
echo "GRACIAS POR UTILIZAR NUESTRO PROGRAMA..."
exit
;;
esac
done

echo "Error de opcion..."


ANÁLISIS DE RESULTADOS
Con la ejecución del programa antes mencionado se permite realizar peticiones de información de los OID del árbol
MIB, lo que al momento de la ejecución permite imprimir la información del host monitoreado, OID, Fecha y hora de
consulta y el tipo de operación realizada enviando tanto los reportes de consulta como los errores a archivos
específicos.
Es por esto que se utiliza los comandos snmpget, snmpgetnext, snmpwalk, snmpset, además el comando snmptrap
Las 4 primeras opciones del menú requieren parámetros de entrada al programa como son: host, puerto, versión, y
los OID que necesitamos consultar.
Todos estos parámetros ingresaran al programa y se podrán realizar múltiples consultas mientras no elijamos la
opción Salir, todas las consultas se realizaran utilizando los mismos parámetros indicados inicialmente.
Para la opción de snmptrapd no se necesitan parámetros de entrada, la ejecución de esta opción es automática, el
promt aparecerá en espera de notificaciones que lleguen al gestor. Al recibir una notificación, la información que se
desplegará a continuación contiene: Fecha y hora, Hostname y Dirección IP, el OID del dueño de la trap enviada.
En el caso de la opción snmpset, es necesario indicar parámetros adicionales a los se ingresan por teclado, para lo
cual se desplagará un submenú adicional donde se deberá asociar el tipo de dato que se desea cambiar y el valor
del mismo.

MENÚ
SNMPTRAP
REPORTE CONSULTA
CONCLUSIONES
 SNMP facilita la comunicación entre la estación administradora y el agente de un dispositivo de red (o
nodo administrado), permitiendo que los agentes transmitan datos estadísticos (variables) a través de la
red a la estación de administración.
 Las TRAP informa fallos como la perdida de comunicación con un vecino transmitida por el agente
recibida por el nodo administrador.
 El poseer archivos con información de la administración de la red son de gran importancia ya que nos
permite realizar la optimización de los recursos y mejorar la eficiencia de la misma.
 SNMP get solicita uno o más (lista) atributos (valores) de un objeto (o variable), transmitida por el nodo
administrador y recibida por el agente que contesta.
 SNMP set actualiza uno o varios atributos de un objeto transmitido por el nodo administrador y recibida por
el agente.
 Utilizando los diferentes filtros y herramientas que nos ofrece la programación del Sistema Operativo Linux
podemos obtener información específica y detallada sobre aspectos como OID de origen y destino,
fechas, horas de los procesos de los objetos gestionados, así como, los parámetros necesarios de los
objetos gestionados.
 Al usar la versión 2c de snmp la salida de error usan 2> no funciona para errores de comando, aunque los
errores de sintaxis se guardan adecuadamente en un archivo de texto.

RECOMENDACIONES
 Es necesario siempre implementar sistemas de gestión para las redes puesto que ayudan a la seguridad y
mejorar la eficiencia de las mismas.
 Se recomienda el uso de la sentencia for para evitar la repetición de sentencias if consecutivas,
reduciendo el tiempo de procesamiento, además de reducir el tamaño del programa que se está
implementando.
 Es importante el conocimiento de la estructura de los archivos snmpd.conf y snmptrapd.conf para realizar
una ejecución adecuada y rápida de los servicios que se desea implementar.
BIBLIOGRAFIA
 Simple Network Management Protocol
http://es.wikipedia.org/wiki/Simple_Network_Management_Protocol[En línea].

 BECERRO MARTINEZ, Antonio,SHELL_INTRO.pdf. 2005[En línea].

 Gestión de Red: Protocolo SNMP


http://ceres.ugr.es/~alumnos/gder/[En línea].

 Net-Snmp Tutorial --snmpget


http://net-snmp.sourceforge.net/tutorial/tutorial-5/commands/snmpget.html[En línea].

 MARTÍN, Silvia, VELASCO, Sergio, “CREACIÓN DE SCRIPTS EN LINUX”.pdf[En línea]. 26 de


Mayo 2008. Aula SUN UCM de software libre.

 DE HOYOS, Marco Antonio, PROGRAMACIÓN EN BASH.pdf[En línea].


http://tecnicoslinux.com.ar
PORCENTAJES DE PARTICIPACION EN LA REALIZACION DEL PROYECTO

Todos los integrantes del grupo participamos de igual manera es por eso que los
porcentajes para cada uno son:
 Montoya Oscar 33.33%
 Guanoluisa Carina 33.33%
 Villenas Alejandra 33.33%

S-ar putea să vă placă și