Появилась задача получать информацию с сетевых принтеров HP. Основная проблема это поиск необходимых OID (Object IDentificator - числовой идентификатор объекта в дереве MIB) для получения значений принтера. Вот тут есть интересная статья про MIB и OID. Информации по этому вопросу можно найти в интернете много, поэтому приведу лишь код.
{ Функция SNMP опроса принтера }
Function SNMPQuery (Host, oid: string) : string;
var
s: String;
i, j: Integer;
SNMP: TIdSNMP;
temps:string;
Begin
SNMP := TIdSNMP.Create(nil);
SNMP.Query.Host := Host;
SNMP.Query.Port := 161;
SNMP.Query.Community := 'public';
SNMP.Query.PDUType := PDUGetRequest;
SNMP.Query.MIBAdd(oid,'');
try
if SNMP.SendQuery then
for i := 0 to SNMP.Reply.ValueCount - 1 do
begin
SNMPQuery:= SNMP.Reply.Value[i];
temps:=SNMP.Reply.Value[0]
end;
finally
Application.ProcessMessages;
SNMP.Free;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
Host: string;
oid:string[80];
Begin
host:= '192.168.90.90';
oid:= '1.3.6.1.2.1.43.11.1.1.8.1.1';
ShowMessage('Объем картриджа' + ': ' + SNMPQuery(host, mib));
end;
{ Функция SNMP опроса принтера }
Function SNMPQuery (Host, oid: string) : string;
var
s: String;
i, j: Integer;
SNMP: TIdSNMP;
temps:string;
Begin
SNMP := TIdSNMP.Create(nil);
SNMP.Query.Host := Host;
SNMP.Query.Port := 161;
SNMP.Query.Community := 'public';
SNMP.Query.PDUType := PDUGetRequest;
SNMP.Query.MIBAdd(oid,'');
try
if SNMP.SendQuery then
for i := 0 to SNMP.Reply.ValueCount - 1 do
begin
SNMPQuery:= SNMP.Reply.Value[i];
temps:=SNMP.Reply.Value[0]
end;
finally
Application.ProcessMessages;
SNMP.Free;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
Host: string;
oid:string[80];
Begin
host:= '192.168.90.90';
oid:= '1.3.6.1.2.1.43.11.1.1.8.1.1';
ShowMessage('Объем картриджа' + ': ' + SNMPQuery(host, mib));
end;
Комментариев нет:
Отправить комментарий