- 论坛徽章:
- 0
|
系统环境:
CentOS 5
NET-SNMP版本:
5.3.2
安装在/usr/local/net-snmp目录下。
头文件:/home/dexin/Desktop/net-snmp-5.3.2/include
库文件:-L/usr/local/net-snmp/lib,会用到libnetsnmp.so库。
标准库文件:libcrypto.so。
编译命令:
gcc my_snmptable.c -o my_snmptable -I/home/dexin/Desktop/net-snmp-5.3.2/include
-L/usr/local/net-snmp/lib -lnetsnmp -lcrypto
snmp.conf配置文件(附件里有)
位置:/root/.snmp/snmp.conf
内容:
*****************************************************************************
mibdirs /usr/local/net-snmp/share/snmp/mibs
*****************************************************************************
snmpd.conf配置文件(附件里有)
位置:/root/.snmp/snmpd.conf
内容:
*****************************************************************************
com2sec local localhost dexin #dexin 为你设定的community
group MyRWGroup v1 local
group MyRWGroup v2c local
group MyRWGroup usm local
view all included .1
access MyRWGroup "" any noauth exact all all none
*****************************************************************************
源码分析:
表的列的数据结构,包含输出宽度、子oid、列的名称,还有输出格式:
struct column {
int width;
oid subid;
char *label;
char *fmt;
} *column = NULL;
lable:列的名称;
fmt:列输出格式,在函数print_table()中用到。
void usage(void);
参数输入不对时,程序用该函数友好提示正确用法。
void get_field_names(void);
根据root(表的OID),获取表名(table_name)、获取表的列的个数(fields)和各列的名称(在column[]中)。
void get_table_entries(netsnmp_session * ss);
用SNMP_MSG_GETNEXT获取表的数据,和表的行的个数(entries)。
void getbulk_table_entries(netsnmp_session * ss);
用SNMP_MSG_GETBULK获取表的数据,和表的行的个数(entries)。
表内容的数据结构(在附件里,且是word格式):
源码:
在附件里。
[ 本帖最后由 dexinmeng 于 2008-5-17 15:30 编辑 ] |
|