LinuxParty

Ratio:  / 11
MaloBueno 

snmpget

La órden snmpget se puede utilizar para obtener datos de un host remoto dado su nombre de host, la unformación y un OID. Como ejemplo veamos la siguiente órden:

# snmpget -c public -v 2c localhost system.sysUpTime.0
SNMPv2-MIB::sysUpTime.0 = Timeticks: (326510) 0:54:25.10


En la órden anterior, localhost es el nombre del equipo con el que queremos hablar, utilizando la comunidad SNMP public y solicitamos el valor del OID system.sysUpTime.0. Todas las utilidades que vamos a ver permiten utilizar abreviaturas de OID y real- izan búsquedas de la porción pasada como argumento en todo el arbol por defecto para facilitar la tarea al usuario. De este modo podemos utilizar simplemente una porción del OID si así lo deseáramos:

# snmpget -c public -v 2c localhost sysUpTime.0
SNMPv2-MIB::sysUpTime.0 = Timeticks: (326510) 0:54:25.10


Un error habitual cuando utilizamos esta órden es olvidar poner el índice en los datos que estamos buscando. En las órdenes anteriores, la variable solicitada es un escalar y el índice de los datos escalares es siempre un simple 0, de ahí el ’.0’ en todos los OIDs anteriores. Si lo hubiéramos olvidado hubiéramos obtenido un error que es diferente en función de si estamos utilizando una versión u otra de SNMP:

# snmpget -c public -v 1 localhost system.sysUpTime
Error in packet
Reason: (noSuchName) There is no such variable name in this MIB. Failed object: SNMPv2-MIB::sysUpTime
# snmpget -c public -v 2c localhost system.sysUpTime SNMPv2-MIB::sysUpTime = No Such Instance currently exists at this OID Se pueden realizar múltiples consultas en una única órden: snmpget -c public -v 2c localhost system.sysUpTime.0 system.sysName.0 SNMPv2-MIB::sysUpTime.0 = Timeticks: (390447) 1:05:04.47 SNMPv2-MIB::sysName.0 = STRING: mago.aut.uah.es

snmptranslate

Esta órden es una herramiente muy poderosa que permite explorar el árbol MIB de diversas formas desde la línea de órdenes. Su forma más básica permite pasar de un OID a la variable que representa (representación textual):

#snmptranslate .1.3.6.1.2.1.1.3.0
SNMPv2-MIB::sysUpTime.0
También permite pasar del nombre de la variable al OID que representa:
#snmptranslate -On SNMPv2-MIB::system.sysUpTime.0
.1.3.6.1.2.1.1.3.0

La variable que pasamos como argumento a snmptranslate se puede expresar en cualquier formato numérico, texto o una mezcla de ambos. El flag -On simplemente sirve para indicar que queremos la salida en formato de OID:

#snmptranslate .iso.3.6.1.private.enterprises.2021.2.1.prNames.0
UCD-SNMP-MIB::prNames.0
#snmptranslate -On .iso.3.6.1.private.enterprises.2021.2.1.prNames.0
.1.3.6.1.4.1.2021.2.1.2.0

Hay ocasiones en que no recordamos el OID completo que estamos buscando. En esos casos es útil la opción -IR permite realizar búsquedas del OID completo si cono- cemos parte del mismo:

# snmptranslate sysUpTime.0
sysUpTime.0: Unknown Object Identifier (Sub-id not found: (top) ->sysUpTime)
# snmptranslate -IR sysUpTime.0
SNMPv2-MIB::sysUpTime.0

Puede que, incluso, ni siquiera conozcamos el nombre completo del OID sino sólo una parte del mismo. En ese caso puede ser útil la opción -Ib (b del inglés ’best match’) que nos da el OID que se concuerde con el patrón que le indicamos. Los patrones son similares a los que vimos en la introducción a Linux:

# snmptranslate -Ib ’sys.*ime’
SNMPv2-MIB::sysORUpTime

Para obtener una lista de todos los nodos que se ajustan a un patrón determinado utilizamos el flag -TB:

#snmptranslate -TB ’vacm.*table’
SNMP-VIEW-BASED-ACM-MIB::vacmViewTreeFamilyTable
SNMP-VIEW-BASED-ACM-MIB::vacmAccessTable
SNMP-VIEW-BASED-ACM-MIB::vacmSecurityToGroupTable
SNMP-VIEW-BASED-ACM-MIB::vacmContextTable

Para obtener información sobre un determinado nodo del mib podemos utilizar el flag -Td:

# snmptranslate -On -Td -Ib ’sys.*ime’
.1.3.6.1.2.1.1.9.1.4
sysORUpTime OBJECT-TYPE
-- FROM SNMPv2-MIB
-- TEXTUAL CONVENTION TimeStamp
SYNTAX TimeTicks
MAX-ACCESS read-only
STATUS current
DESCRIPTION "The value of sysUpTime at the time this conceptual
row was last instantiated."
::= { iso(1) org(3) dod(6) internet(1) mgmt(2) mib-2(1) system(1) sysORTable(9)
sysOREntry(1) 4 }

Para finalizar son esta órden, podemos obtener una representación del árbol, o de una porción del mismo utilizando el flag -Tp:

# snmptranslate -Tp -IR system
+--system(1)
|
+-- -R-- String sysDescr(1)
| Textual Convention: DisplayString
| Size: 0..255
+-- -R-- ObjID sysObjectID(2)
+-- -R-- TimeTicks sysUpTime(3)
+-- -RW- String sysContact(4)
| Textual Convention: DisplayString
| Size: 0..255
+-- -RW- String sysName(5)
| Textual Convention: DisplayString
| Size: 0..255
+-- -RW- String sysLocation(6)
| Textual Convention: DisplayString
| Size: 0..255
+-- -R-- INTEGER sysServices(7)
| Range: 0..127
+-- -R-- TimeTicks sysORLastChange(8)
| Textual Convention: TimeStamp
|
+--sysORTable(9)
|
+--sysOREntry(1)
| Index: sysORIndex
|
+-- ---- INTEGER sysORIndex(1)
| Range: 1..2147483647
+-- -R-- ObjID sysORID(2)
+-- -R-- String sysORDescr(3)
| Textual Convention: DisplayString
| Size: 0..255
+-- -R-- TimeTicks sysORUpTime(4)
Textual Convention: TimeStamp

snmgetnext

Esta órden es similar al comando snmpget se utiliza para obtenet el siguiente oid en el árbol de datos del mib. En lugar de obtener los datos que se solicitan directamente, devuelve el siguiente OID en el árbol y su valor:

SNMPv2-MIB::sysContact.0=STRING:Root(configure /etc/snmp/snmp.local.conf)

Esta órden también se puede utilizar para recorrer de forma manual el árbol de las mib en un host remoto, especificando siempre el último OID aparecido en la línea de órdenes para la siguiente órden:

snmpgetnext -v 2c -c public localhost system.sysUpTime.0
SNMPv2-MIB::sysContact.0 = STRING: Root (configure /etc/snmp/snmp.local.conf)
[root@mago root]# snmpgetnext -v 2c -c public localhost system.sysContact.0
SNMPv2-MIB::sysName.0 = STRING: mago.aut.uah.es
[root@mago root]# snmpgetnext -v 2c -c public localhost system.sysName.0
SNMPv2-MIB::sysLocation.0 = STRING: Unknown (edit /etc/snmp/snmpd.conf)

La órden snmpwalk que veremos a continuación hace exactamente esto pero de una sola vez. La órden snmgetnext devuelve el valor de un OID del que hayamos olvidado el índice frente a snmpget que devolvía un error:

snmpget -v 2c -c public localhost system.sysUpTime.0
SNMPv2-MIB::sysUpTime.0 = Timeticks: (95862) 0:15:58.62
[root@mago root]# snmpgetnext -v 2c -c public localhost system.sysUpTime
SNMPv2-MIB::sysUpTime.0 = Timeticks: (96847) 0:16:08.47

snmpwalk

Esta órden realiza una serie completa de getnexts automáticamente y se detiene cuando devuelve resultados que no están en el rango del OID especificado original- mente. Por ejemplo, si quisiéramos obtener toda la información almacenada en el grupo system del MIB de una máquina podríamos hacerlo utilizando esta órden:

# snmpwalk -v 2c -c public localhost system
SNMPv2-MIB::sysDescr.0 = STRING: Linux mago.aut.uah.es 2.6.0-test11 #27 Tue
Dec 16 11:39:03 CET 2003 i686
SNMPv2-MIB::sysObjectID.0 = OID: NET-SNMP-MIB::netSnmpAgentOIDs.10
SNMPv2-MIB::sysUpTime.0 = Timeticks: (120246) 0:20:02.46
SNMPv2-MIB::sysContact.0 = STRING: Root (configure /etc/snmp/snmp.local.conf)
SNMPv2-MIB::sysName.0 = STRING: mago.aut.uah.es
SNMPv2-MIB::sysLocation.0 = STRING: Unknown (edit /etc/snmp/snmpd.conf)
SNMPv2-MIB::sysORLastChange.0 = Timeticks: (4) 0:00:00.04
SNMPv2-MIB::sysORID.1 = OID: IF-MIB::ifMIB
SNMPv2-MIB::sysORID.2 = OID: SNMPv2-MIB::snmpMIB
SNMPv2-MIB::sysORID.3 = OID: TCP-MIB::tcpMIB
SNMPv2-MIB::sysORID.4 = OID: IP-MIB::ip
SNMPv2-MIB::sysORID.5 = OID: UDP-MIB::udpMIB
SNMPv2-MIB::sysORID.6 = OID: SNMP-VIEW-BASED-ACM-MIB::vacmBasicGroup
SNMPv2-MIB::sysORID.7 = OID: SNMP-FRAMEWORK-MIB::snmpFrameworkMIBCompliance
SNMPv2-MIB::sysORID.8 = OID: SNMP-MPD-MIB::snmpMPDCompliance
SNMPv2-MIB::sysORID.9 = OID: SNMP-USER-BASED-SM-MIB::usmMIBCompliance
SNMPv2-MIB::sysORDescr.1 = STRING: The MIB module to describe generic objects
for network interface sub-layers
SNMPv2-MIB::sysORDescr.2 = STRING: The MIB module for SNMPv2 entities
SNMPv2-MIB::sysORDescr.3 = STRING: The MIB module for managing TCP implementations
SNMPv2-MIB::sysORDescr.4 = STRING: The MIB module for managing IP and ICMP
implementations
SNMPv2-MIB::sysORDescr.5 = STRING: The MIB module for managing UDP implementations
SNMPv2-MIB::sysORDescr.6 = STRING: View-based Access Control Model for SNMP.
SNMPv2-MIB::sysORDescr.7 = STRING: The SNMP Management Architecture MIB.
SNMPv2-MIB::sysORDescr.8 = STRING: The MIB for Message Processing and Dispatching.
SNMPv2-MIB::sysORDescr.9 = STRING: The management information definitions
for the SNMP User-based Security Model.
SNMPv2-MIB::sysORUpTime.1 = Timeticks: (0) 0:00:00.00
SNMPv2-MIB::sysORUpTime.2 = Timeticks: (0) 0:00:00.00
SNMPv2-MIB::sysORUpTime.3 = Timeticks: (0) 0:00:00.00
SNMPv2-MIB::sysORUpTime.4 = Timeticks: (0) 0:00:00.00
SNMPv2-MIB::sysORUpTime.5 = Timeticks: (0) 0:00:00.00
SNMPv2-MIB::sysORUpTime.6 = Timeticks: (0) 0:00:00.00
SNMPv2-MIB::sysORUpTime.7 = Timeticks: (4) 0:00:00.04
SNMPv2-MIB::sysORUpTime.8 = Timeticks: (4) 0:00:00.04
SNMPv2-MIB::sysORUpTime.9 = Timeticks: (4) 0:00:00.04

snmptable

Esta órden muestra una tabla SNMP en un formato de filas y columnas de manera que su visionado y comprensión es más sencillo que si utilizamos la órden snmpwalk:

# snmptranslate -Tp -IR sysORTable
+--sysORTable(9)
|
+--sysOREntry(1)
| Index: sysORIndex
|
+-- ---- INTEGER sysORIndex(1)
| Range: 1..2147483647
+-- -R-- ObjID sysORID(2)
+-- -R-- String sysORDescr(3)
| Textual Convention: DisplayString
| Size: 0..255
+-- -R-- TimeTicks sysORUpTime(4)
Textual Convention: TimeStamp
# snmptable -v 2c -Cw 80 -c public localhost sysORTable
SNMP table: SNMPv2-MIB::sysORTable
sysORID
IF-MIB::ifMIB
SNMPv2-MIB::snmpMIB
TCP-MIB::tcpMIB
IP-MIB::ip
UDP-MIB::udpMIB
SNMP-VIEW-BASED-ACM-MIB::vacmBasicGroup
SNMP-FRAMEWORK-MIB::snmpFrameworkMIBCompliance
SNMP-MPD-MIB::snmpMPDCompliance
SNMP-USER-BASED-SM-MIB::usmMIBCompliance
SNMP table SNMPv2-MIB::sysORTable, part 2
sysORDescr
The MIB module to describe generic objects for network interface sub-layers
The MIB module for SNMPv2 entities
The MIB module for managing TCP implementations
The MIB module for managing IP and ICMP implementations
The MIB module for managing UDP implementations
View-based Access Control Model for SNMP.
The SNMP Management Architecture MIB.
The MIB for Message Processing and Dispatching.
The management information definitions for the SNMP User-based Security Model.
SNMP table SNMPv2-MIB::sysORTable, part 3
sysORUpTime
0:0:00:00.00
0:0:00:00.00
0:0:00:00.00
0:0:00:00.00
0:0:00:00.00
0:0:00:00.00
0:0:00:00.04
0:0:00:00.04
0:0:00:00.04

snmpset

Esta órden se utiliza para modificar información en un host. Por cada una de las variables que se quiere establecer, es necesario el OID a actualizar, el tipo de datos de la variable y el valor al que queramos poner la variable. Podemos obtener los tipos de datos válidos del siguiente modo:

#snmpset -h | tail -4
TYPE: one of i, u, t, a, o, s, x, d, b, n
i: INTEGER, u: unsigned INTEGER, t: TIMETICKS, a: IPADDRESS
o: OBJID, s: STRING, x: HEX STRING, d: DECIMAL STRING, b: BITS
U: unsigned int64, I: signed int64, F: float, D: double

Veamos como consultar, establecer y consultar el nuevo valor de una variable uti- lizando snmpget y snmpset:

#snmpget -v 2c -c public localhost sysContact.0
SNMPv2-MIB::sysContact.0 = STRING: Root 
#snmpset -v 2c -c public localhost sysContact.0 s “Admin”
SNMPv2-MIB::sysContact.0 = STRING: Admin
#snmpget -v 2c -c public localhost sysContact.0
SNMPv2-MIB::sysContact.0 = STRING: Admin

Si no se tiene drecehos de escritura sobre un objeto obtendremos un error que diferirá en función de si estamos utilizando la versión 1 o la versión 2 de SNMP:

# snmpset -v 1 -c public localhost sysName.0 s "alguien"
Error in packet.
Reason: (noSuchName) There is no such variable name in this MIB.
# snmpset -v 2c -c public localhost sysName.0 s "alguien"
Error in packet.
Reason: notWritable (that object does not support modification)

El Autor de este documento es:

Enrique de la Hoz



Un artículo interesante que te puede interesar para hacer pruebas es:

Cómo clonar y simular un dispositivo de Red en Linux




 

Comentarios   

-1 # Re: Introducción a los comandos SNMP, snmpwalk, snmpget, snmptranslate.. .Guest 21-09-2011 12:09
Excelente informacion.

Una pregunta, que es el SysObjID???

No se mucho de UNIX, solo que tengo que sacar informacion de un equipo que me asignaron y me dieron estos comandos.

Snmpwalk –v  [snmp version] –c [read community string] [device ip address][sysObjectID]

snmpwalk -v 1 -c {community string} {ip address} sysObjectID

me los puedes explicar por favor.

Saludos

Responder | Responder con una citación | Citar
-1 # Re: Introducción a los comandos SNMP, snmpwalk, snmpget, snmptranslate.. .Guest 22-09-2011 03:11
Pues, debe ser un OID de la community, ¿no?

Bueno, si te instalas snmp-utils


SNMPWALK(1)                                       Net-SNMP & nbsp; &nbs p;  & nbsp; &nbs p;  & nbsp; &nbs p;  & nbsp; &nbs p;  & nbsp; &nbs p;  & nbsp; &nbs p;  & nbsp; &nbs p;  & nbsp; SNMPWALK(1)

NAME
       snmpwalk - retrieve a subtree of management values using SNMP GETNEXT requests

SYNOPSIS
       snmpwalk [APPLICATION OPTIONS] [COMMON OPTIONS] [OID]

DESCRIPTION
       snmpwalk is an SNMP application that uses SNMP GETNEXT requests to query a network entity for a tree
       of information.

       An object identifier (OID) may be given on the command line.  This OID specifies  which  portion  of
       the  object  identifier space will be searched using GETNEXT requests.  All variables in the subtree
       below the given OID are queried and their values presented to the user.  Each variable name is given
       in the format specified in variables(5).

       If no OID argument is present, snmpwalk will search the subtree rooted at SNMPv2-SMI::mib -2 (includ‐
       ing any MIB object values from other MIB modules, that are defined as lying  within  this  subtree).
       If  the  network entity has an error processing the request packet, an error packet will be returned
       and a message will be shown, helping to pinpoint why the request was malformed.

       If the tree search causes attempts to search beyond the end of the MIB, the  message  "End  of  MIB"
       will be displayed.

Responder | Responder con una citación | Citar
0 # Re: Introducción a los comandos SNMP, snmpwalk, snmpget, snmptranslate.. .Guest 05-03-2012 18:11
hola he puesto en marcha el snmp pero con el disco disponible me manda el error  de: 
 No Such Object available on this agent at this OID,   
c on snmptranslate obtengo los OID correctos, la memoría ram si funciona pero el problema son los OID  de disco,¿a lguna idea de que falta o este mal?.

Gracias y saludos.
Responder | Responder con una citación | Citar
0 # Re: Introducción a los comandos SNMP, snmpwalk, snmpget, snmptranslate.. .Guest 07-03-2012 23:56
Ni idea, pero si lo solucionas, podrías poner aquí la resolución... No se que es lo que quieres decir, si es que tienes problemas para que te responda el snmp del disco?

Mira a ver si tienes la mib correcta...

$snmpwalk -On -v 1 192.168.10.1 -c p14180893 .
y veréis que hay de todo. Bueno, ya que estamos con la ocupación del disco, vamos a buscar algo por la mib: $snmpwalk -v 1 192.168.10.1 -c p14180893 disk
$snmpwalk localhost miclave dsk

enterprises.ucdavis.dskTable.dskEntry.dskIndex.1 = 1
enterprises.ucdavis.dskTable.dskEntry.dskPath.1 = /
enterprises.ucdavis.dskTable.dskEntry.dskDevice.1 = /dev/hda1
enterprises.ucdavis.dskTable.dskEntry.dskMinimum.1 = 10000
enterprises.ucdavis.dskTable.dskEntry.dskMinPercent.1 = -1
enterprises.ucdavis.dskTable.dskEntry.dskTotal.1 = 1152828
enterprises.ucdavis.dskTable.dskEntry.dskAvail.1 = 674296
enterprises.ucdavis.dskTable.dskEntry.dskUsed.1 = 419972
enterprises.ucdavis.dskTable.dskEntry.dskPercent.1 = 38
enterprises.ucdavis.dskTable.dskEntry.dskPercentNode.1 = 19
enterprises.ucdavis.dskTable.dskEntry.dskErrorFlag.1 = 0
enterprises.ucdavis.dskTable.dskEntry.dskErrorMsg.1 =



Comprobaciones.

Considerando, como ejemplo, que sea signó como
clave de acceso Cl4v3-d3-Acc3s0 en un sistema cuya dirección IP es
192.168.1.254 , para probar si la configuración funciona, solo hay que
ejecutar los dos siguiente mandatos a fin verificar que devuelvan
información acerca del sistema consultado.snmp walk -v 1 192.168.1.254
-c Cl4v3-d3-Acc3s0 system

snmpwalk -v 1 192.168.1.254
-c Cl4v3-d3-Acc3s0 interfaces

Modificaciones necesarias en el muro cortafuegos.

Si
se utiliza un cortafuegos con políticas estrictas, como por ejemplo
Shorewall, es necesario abrir los puerto 161 y 162 por UDP (SNMP y
SNMPTRAP, respectivamente).

Las reglas para el fichero
/etc/shorewal l/rules de Shorewall en un sistema con una zona (net),
corresponderí a a lo siguiente:#ACTI ON SOURCE DEST PROTO
DEST SOURCE
# PORT PORT(S)1
ACCEPT net fw udp 161,162
#LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE


Las
reglas para el fichero /etc/shorewall/ rules de Shorewall en un sistema
con dos zonas (net y loc), donde solo se va a permitir el acceso al
servicio snmpd desde la red local, correspondería a lo siguiente:#ACTI ON
SOURCE DEST PROTO DEST SOURCE
# PORT PORT(S)1
ACCEPT loc fw udp 161,162
#LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE
Responder | Responder con una citación | Citar
0 # Danny Henao 18-10-2012 23:02
Señore!!!!, su ayuda por favor.

Nunca he montado este servicio y Hoy me lo estan pidiendo en la compañia - He buscado mucho pero no se en realidad si lo estoy haciendo bien.

Acá tenemos unos servidores de AVAYA. Lamentablemente no se como iniciar. Ejecuto comandos pero no me trae algo concreto por que .... "no se como continuar"

Me gustaria que alguien que por lo menos le esté funcionando me contacte por correo y me de algunos pasos - Le quedaria muy agradecido.

Muchas Gracias.
Responder | Responder con una citación | Citar
0 # Mauricio Guzman 18-04-2015 03:07
Buenas Tardes! Excelente post! Solo queria saber si alguien tiene idea de como realizar un snmpwalk sobre un rango de ip´s. Hasta el momento se como hacerlo sobre una sola ip especifica:

snmpwalk -c public -v 1 192.168.0.27
Responder | Responder con una citación | Citar

Escribir un comentario


Código de seguridad
Refescar



Redes:



 

Encuesta de LinuxParty

Como SysAdmin o CEO, que sistemas preferirías instalarle a tus usuarios

Donar a LinuxParty

La mejor forma de darnos las gracias, es hacer una donación.


Tutorial de Linux

Naturaleza, Ciencia y Tecnologia

Nos obligan a moslestarte con la obviedad de que este sitio utiliza Cookies. Ver política