SNMP 数据结构
SNMP数据类型
数据类型共分为三大类,即:
(1)通用类型(Universal)
(2)通用结构类型(Universal-constructed)
(3)应用类型(application)
●通用数据类型
通用数据类型通常被称为非聚合类型,在SNMP协议中有4种通用数据类型:
(1)INTEGER: 整型,是-2,147,483,648~2,147,483,647的有符号整数;
(2)OCTET STRING: 字符串;
(3)OBJECT IDENTIFIER: 对象标识符;
(4)NULL: 空值。
●通用结构类型
结构类型指列表和表格,常被称作聚合类型。在SNMP协议中主要使用两种结构类型:
(1)SEQUENCE 用于列表。这一数据类型与大多数程序设计语言中的“structure”类似。一个SEQUENCE包括0个或更多元素,每一个元素又是另一个ASN.1数据类型。
(2)SEQUENCE OF type 用于表格。这一数据类型与大多数程序设计语言中的“array”类似。一个表格包括0个或更多元素,每一个元素又是另一个ASN.1数据类型。
●应用数据类型
应用数据类型采用隐式定义,是引用SNMP的简单数据类型来定义的。主要有6种:
(1)IpAddress: 以网络序表示的IP地址。因为它是一个32位的值,所以定义为4个字节;
(2)network address:网络地址,表示从一个特定协议族中选定的网络地址, SNMPv1仅支持32位IP地址;所以与IpAddress等效;
(3)counter:计数器是一个非负的整数,它递增至最大值,而后归零。SNMPv1中定义的计数器是32位的,即最大值为4,294,967,295;
(4)Gauge :也是一个非负整数,它可以递增或递减,但达到最大值时保持在最大值,最大值为2^32-1;
(5)time ticks:是一个时间单位,表示以0.01秒为单位计算的时间;
opaque:表示用于传递任意信息串的任意编码格式,它与SMI使用的严格数据输入格式不同。
bash-3.00# ps -ef|grep snmpd
root 632 1 0 7月 23 ? 0:00 /usr/lib/snmp/snmpdx -y -c/etc/snmp/conf
root 665 1 0 7月 23 ? 0:04 /usr/sfw/sbin/snmpd
root 3767 3760 0 09:33:32 pts/2 0:00 grepsnmpd
bash-3.00# snmpi -a sun dump tcpConnTable
bash: snmpi: command not found
bash-3.00# arp -a
Net to Media Table: IPv4
Device IP Address Mask Flags Phys Addr
------ -------------------- ----------------------- ---------------
e1000g0 10.10.128.250 255.255.255.255 ec:6c:9f:0d:da:fc
e1000g0 10.10.128.254 255.255.255.255 o c4:ca:d9:2e:d5:ca
e1000g0 Solaris10 255.255.255.255 SPLA 00:25:90:1f:ea:34
e1000g0 10.10.128.125 255.255.255.255 o 00:50:56:83:0c:a2
e1000g0 224.0.0.0 240.0.0.0 SM 01:00:5e:00:00:00
下面是net-snmp安装
环境:solaris 10
下载
http://sourceforge.net/projects/net-snmp/files/net-snmp/5.7.2/net-snmp-5.7.2.tar.gz/download
gunzip –c net-snmp-5.7.2.tar.gz |tar xf –
*** Error code 1
make: Fatal error: Command failed fortarget `libnetsnmp.la'
Current working directory/net-snmp-5.7.2/snmplib
*** Error code 1
The following command caused the error:
if test "snmplib agent apps man local mibs" !=""; then \
it="snmplib agent apps manlocal mibs" ; \
for i in $it ; do \
echo "making all in`pwd`/$i"; \
( cd $i ; make ) ; \
if test $? != 0 ; then \
exit 1 ; \
fi \
done \
fi
make: Fatal error: Command failed fortarget `subdirs'
bash-3.00#PATH=/usr/bin:/usr/local/bin:/usr/ucb:/etc:/usr/sbin:/usr/bin:/usr/sfw/bin:/usr/ccs/bin:/opt/
./configure
Make