LINUXSC :: Linux, el Open Source más popular del mundo - Introducción a los comandos SNMP, snmpwalk, snmpget, snmptranslate...
 
        
21 | 05 | 2012


Introducción a los comandos SNMP, snmpwalk, snmpget, snmptranslate...

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)





Sigueme en


Publicidad

Centro de Soluciones Linux

Santa Clara Ocoyucan

KoalaSoft-Sitio de Amigos

Puebl@Media



Linuxsc en RSS
No. de Visitas
0035317
HoyHoy1025
AyerAyer1437
Esta SemanaEsta Semana2462
Este mesEste mes31179
TotalTotal35317