snmp_pp库问题 snmp++

Enockipp 2015-01-22 11:14:26
配置好了snmp,通过snmpwalk能正常获取cpu 内存 硬盘信息
但是通过snmp++库编写程序,不能获取硬盘信息,错误:SNMP: Variable does not exist,不知道是为什么,求解答。程序中的oid都是没问题的啊

#include <iostream>
#include <string>
#include <snmp_pp/snmp_pp.h>
//cpu
//.1.3.6.1.4.1.2021.11.11.0 idle percentage

//.1.3.6.1.2.1.25.2.2.0 memory size
//.1.3.6.1.2.1.25.2.3.1.6.1 free_mem_used
//-
//.1.3.6.1.2.1.25.2.3.1.6.6 free_mem_buffers
//-
//.1.3.6.1.2.1.25.2.3.1.6.7 free_mem_cached

//disk
//.1.3.6.1.4.1.2021.9.1.7 disk available
//.1.3.6.1.4.1.2021.9.1.8 disk used
//.1.3.6.1.4.1.2021.9.1.9 disk used percentage

//network
const std::string cpuIdleOid("1.3.6.1.4.1.2021.9.1.7");
void get_system(){
int status;
CTarget ctarget((IpAddress)"202.127.204.190");
Oid id(cpuIdleOid.c_str());
std::cout<<id.get_printable()<<std::endl;
//ctarget.set_timeout(100);//unit 1/100s 100* 1/100s
Vb vb(Oid(cpuIdleOid.c_str()));
Pdu pdu;
Snmp snmp(status);
if(status!=SNMP_CLASS_SUCCESS){
std::cout<<snmp.error_msg(status)<<std::endl;
return;
}
pdu+=vb;
if((status=snmp.get(pdu,ctarget))!=SNMP_CLASS_SUCCESS){
std::cout<<"error:"<<snmp.error_msg(status)<<std::endl;
}else{
pdu.get_vb(vb,0);
std::cout<<"System Descriptor="<<vb.get_printable_value()<<std::endl;
}
}
int main(int argc,char**argv){
get_system();
return 0;
}
...全文
526 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
qiangcao123 2015-12-22
  • 打赏
  • 举报
回复
应该要先链接lib链接库成功才能执行吧
Enockipp 2015-01-22
  • 打赏
  • 举报
回复
引用 2 楼 xhu_eternalcc 的回复:
[quote=引用 1 楼 zhao4zhong1 的回复:] 先编译链接调试人家自带的例子代码。(←这是万能回复)
我就是改的自带的代码,然后出现了这个问题[/quote] 解决了,原来是没弄明白oid 的请求方式walk和get,用snmp.get_next进行walk就行了。
Enockipp 2015-01-22
  • 打赏
  • 举报
回复
引用 1 楼 zhao4zhong1 的回复:
先编译链接调试人家自带的例子代码。(←这是万能回复)
我就是改的自带的代码,然后出现了这个问题
赵4老师 2015-01-22
  • 打赏
  • 举报
回复
先编译链接调试人家自带的例子代码。(←这是万能回复)

3,881

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧