Chinaunix
标题:
net-snmp开发Agent,调用函数的问题,泪汪汪跪求
[打印本页]
作者:
warterw
时间:
2006-02-10 14:13
标题:
net-snmp开发Agent,调用函数的问题,泪汪汪跪求
欲通过调用Agent动态获取系统资源(比如:CPU利用百分数)
希望每次调用snmpget时得到的结果都是实时更新的。
目前我做的只能获取一个静态的值,即在调用snmpget的时候Agent没有再次调用函数。
我的做法如下:
1. 写mib文件,并使用mib2c编译;
2. 将编译生成的.c文件修改,关键部分为:
#include <...>
...
long testAgentCpu1 = 1; /* 欲输出的变量 */
void init_testAgentCpu1(void){
static oid testAgentCpu1_oid[] = { 1,3,6,1,4,1,8072,2,4,1,1,1 };
al_share_mem(&testAgentCpu1); /* 俺写的函数 */
...
netsnmp_register_int_instance("testAgentCpu1",
testAgentCpu1_oid,
OID_LENGTH(testAgentCpu1_oid),
&testAgentCpu1, NULL);
}//file ended
将该文件编译后,启动snmpd,用snmpget得到的值总是不变(实际上cpu的值是变化的),说明没有调用al_share_mem()函数。
请高人指点。。
作者:
albcamus
时间:
2006-02-11 20:18
忘了, 完全想不起來了, 只能從tutorial看了。
那個東西BUG很多, 也要小心這個
作者:
linternt
时间:
2006-02-12 17:36
你在程序中加一个静态变量,每调用一次函数打印一次,看是否真的没调用函数!
作者:
warterw
时间:
2006-02-13 09:41
linternt老兄说的打印静态变量不知道在snmpget 或snmpwalk中怎么实现
目前我可以将mib生成.c文件的变量直接映射为共享内存地址上,这样倒是可以对这些变量进行实时访问
现在想知道有没有通过snmpd的命令来触发函数执行的方法(相当于重新获取变量值)
作者:
linternt
时间:
2006-02-13 09:56
说明没有调用al_share_mem()函数。
要不你在al_share_mem()函数中加个静态变量,命令执行一次就加1,然后打印这个变量,可行吗?
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2