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