我现在要做的东西很简单就是做个snmp manager,来查询agent的指定mid代码的设备状态
agent就是windows 的snmp server
比如
内存
1.3.6.1.4.1.311.1.1.3.1.1.1.2.0delphi7里面的idsnmp没有例子啊,不知道怎么用
网上下载的indy demo里面也没有idsnmp的例子
agent就是windows 的snmp server
比如
内存
1.3.6.1.4.1.311.1.1.3.1.1.1.2.0delphi7里面的idsnmp没有例子啊,不知道怎么用
网上下载的indy demo里面也没有idsnmp的例子
var
mStr: string;
begin
IdSnmp1.QuickSend('1.3.6.1.4.1.311.1.1.3.1.1.1.2.0'
,'public'
,'192.168.1.188'
,mStr);
ShowMessage(mStr);
end;
procedure TForm1.Button1Click(Sender: TObject);
var
origOID:string;
i:integer;
begin
IdSNMP1.Community := 'public';
IdSNMP1.Host := '127.0.0.1';
IdSNMP1.Query.Clear;
//origOID := '1.3.6.1.2.1.1.1';
origOID := '1.3.6.1.2.1.1.1';
IdSNMP1.Query.MIBAdd(origOID, '');
IdSNMP1.Query.PDUType := PDUGetNextRequest;
memo1.clear;
while IdSNMP1.SendQuery do
begin
if Copy(IdSNMP1.Reply.MIBOID[0], 1, Length(origOID)) <> origOID then
Break;
for I := 0 to IdSNMP1.Reply.ValueCount - 1 do
memo1.Lines.Add(IdSNMP1.Reply.Value[I]);
IdSNMP1.Query.Clear;
IdSNMP1.Query.MIBAdd(IdSNMP1.Reply.ValueOID[0], '');
IdSNMP1.Query.PDUType := PDUGetNextRequest;
end;end;
你查一下这个试试,'1.3.6.1.2.1.1.1.0'
我用'1.3.6.1.2.1.1.1.0'
你的方法能取出来,跟我用'1.3.6.1.2.1.1.1'取出来的结果一样但是我的方法取不出来'1.3.6.1.2.1.1.1.0'为什么会这样?难道mib=oib最后位-1吗?
我实在不懂,能否解释下我就是用的windows自带的snmp server做agent的
如果改成
IdSnmp1.Query.PDUType := PDUGetRequest;
就可以取出来了你那个实际取出来的就是'1.3.6.1.2.1.1.1.0',因为你的代码的意思是取'1.3.6.1.2.1.1.1'的下一个mib。
用你的代码
ShowMessage(IdSnmp1.Reply.MIBGet('1.3.6.1.2.1.1.1.0'));可以显示出值来
但
ShowMessage(IdSnmp1.Reply.MIBGet('1.3.6.1.2.1.1.1'));显示的是空值
这个我用过,结果跟idsnmp一样的trap我都不懂是什么
现在能取到部分mib的信息
但是系统cpu,mem之类的,好像标准mib库没有
查找网上资料
给SNMP服务打补丁
这里说的补丁可不是微软的那些让人头疼的补丁,而是一个转为Windows2000的SNMP服务开发的增强工具,叫SNMP4W2K-STD,可以在http://www.wtcs.org/snmp4tpc/snmp4w2k.htm下载。
下载完成后,安装。安装完毕,进入CMD,(注意:进入CMD之前要把CMD的纵缓冲区设置为大于500的数值,否则会因为纵缓冲区不足而引起错误)执行:
引用:C:\Program Files\SNMP4W2K-STD\MIBINST.BAT根据提示进行选择,不过通常只要一路y就可以完成,最后程序会自动重新启动Windows2000的SNMP服务。这样,就成功的给SNMP服务打上了补丁。 3、获取CPU的MIB码:
代码:.1.3.6.1.4.1.311.1.1.3.1.1.2.1.3.1.48
可是我安装了patch,取1.3.6.1.4.1.311.1.1.3.1.1.2.1.3.1.48 ,还是空值请问该怎么取cpu跟mem之类的信息?