Informe SNMP deber1

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.

Transcript of Informe SNMP deber1

Page 1: Informe SNMP deber1

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.

Page 2: Informe SNMP deber1

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

Page 3: Informe SNMP deber1

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

}

# ----------------------------------------------

Page 4: Informe SNMP deber1

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

Page 5: Informe SNMP deber1

# 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

Page 6: Informe SNMP deber1

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

Page 7: Informe SNMP deber1

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

Page 8: Informe SNMP deber1

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

Page 9: Informe SNMP deber1

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

Page 10: Informe SNMP deber1

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

Page 11: Informe SNMP deber1

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 ...."

Page 12: Informe SNMP deber1

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 : "

Page 13: Informe SNMP deber1

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

Page 14: Informe SNMP deber1

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

Page 15: Informe SNMP deber1

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

Page 16: Informe SNMP deber1

#:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

:::::::::

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

Page 17: Informe SNMP deber1

#:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

::::::::::

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

Page 18: Informe SNMP deber1

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

Page 19: Informe SNMP deber1

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

Page 20: Informe SNMP deber1

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

Page 21: Informe SNMP deber1

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..."

Page 22: Informe SNMP deber1

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Ú

Page 23: Informe SNMP deber1

SNMPTRAP

Page 24: Informe SNMP deber1

REPORTE CONSULTA

Page 25: Informe SNMP deber1

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.

Page 26: Informe SNMP deber1

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

Page 27: Informe SNMP deber1

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%