Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Сети > Indy SNMP


Автор: sani79 14.3.2006, 11:01
Добрый день. Помогите пожалуйста. Есть задача опросить по SNMP устройство и получить значение конкретной переменной. Как это корректно написать с использованием инди? Может быть у кого нибудь есть пример? Заранее спасибо.

Автор: Snowy 14.3.2006, 11:35
Код
var 
  SNMP: TIdSNMP; 
  i:  Integer; 
begin 
  SNMP := TIdSNMP.Create(nil); 
  SNMP.Query.Host := 'localhost';
  SNMP.Query.Community := 'public';
  SNMP.Query.PDUType := PDUGetRequest;
  SNMP.Query.MIBAdd('1.3.6.1.2.1.1.1.0','');
  try
    if SNMP.SendQuery then
    for i := 0 to SNMP.Reply.ValueCount - 1 do
      Memo1.Lines.Add(IntToStr(i) + ': ' + SNMP.Reply.Value[i]);
  finally
    SNMP.Free;
  end;
end;

Автор: sani79 14.3.2006, 11:42
Спасибо за ответ. Этот пример где то видел. Но результат по нему не получил. Возращается пустое значение Replies: 0. Возможно что то не так сделал. Такой вопрос:
SNMP.Query.Host := 'localhost' в этой строчке ведь нужно указывать IP девайса к которому направлен запрос?
Дело в том что я пробовал делать запрос сторонним MIB броузером - там все нормально. то есть девайс отвечает и корректно возвращает значение нужной переменной. А в delphi не выходит.

Автор: Snowy 14.3.2006, 11:46
Цитата(sani79 @ 14.3.2006, 11:42 Найти цитируемый пост)
SNMP.Query.Host := 'localhost' в этой строчке ведь нужно указывать IP девайса к которому направлен запрос?
Естественно. Хотя можно попробовать ее закоментировать.
Мне проверить не на чем.

Цитата(sani79 @ 14.3.2006, 11:42 Найти цитируемый пост)
А в delphi не выходит.
У многих не выходит.
IdSNMP работает не со всеми устройствами.
Какие-то нарекания на него есть, но точно не помню.
Если результата не добъешься, придется писать на IdUDP вручную.

Автор: sani79 14.3.2006, 11:53
Ясно... не обнадеживает... девайс это APC Symmetra. Планировал опрашивать термодатчик на нем. Может есть другие компоненты по делфи? в смысле snmp...

Автор: Snowy 14.3.2006, 12:09
http://forum.sources.ru/index.php?showtopic=76846

Автор: sani79 14.3.2006, 12:18
Спасибо. Сейчас попробую скачать. Firewall пока не пускает, фильтр на zip.
Добавлено @ 12:26
А может можно как нибудь сделать SMNP запрос через какой нибудь скрипт, а потом в дельфи обработать результат? У кого нибудь есть идеи?

Автор: Snowy 14.3.2006, 13:36
Цитата(sani79 @ 14.3.2006, 12:18 Найти цитируемый пост)
А может можно как нибудь сделать SMNP запрос через какой нибудь скрипт
Может и можно. Если есть такой скрипт.

Цитата(sani79 @ 14.3.2006, 12:18 Найти цитируемый пост)
Firewall пока не пускает, фильтр на zip
Скинул на мыло

Автор: sani79 14.3.2006, 14:51
Спасибо за помощь. Но я наконец разобрался. И могу поделится опытом если кому интересно. Вышеприведеный код правильный и работает. Проблема была в идентификаторе переменной. Изначально я устанавливал ее такой как в документации и ничего не получалось, затем я указал тот же id, но в концовку добавил .1 что похоже является id ЗНАЧЕНИЯ переменной и все завершилось получением результата... Всем удачи!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)