NetXMS Support Forum

Russian Support => Общие вопросы => Topic started by: TOLeg on August 06, 2020, 09:16:58 AM

Title: Фильтр цветных принтеров
Post by: TOLeg on August 06, 2020, 09:16:58 AM
Для настройки метрик в шаблоне как настроить фильтр цветных принтеров HP, Xerox?
Title: Re: Фильтр цветных принтеров
Post by: JuraSSik on August 06, 2020, 03:02:27 PM
if (!$node->isSNMP)
   return false;
if (
   ( $node->snmpOID like ".1.3.6.1.4.1.253.8.62.1.19.5.5.*")
{ return true; }
Title: Re: Фильтр цветных принтеров
Post by: TOLeg on August 07, 2020, 10:30:18 AM
Предложенное выше решение не работает :(

Сделал такой фильтр для Xerox 7428. Ругается на if (model like "*7428*"). подскажите, что не так?

transport = CreateSNMPTransport($node);
if (transport == null)
{
  trace(1,"Snmp transport error on ".$node->ipAddr);
  return -1;
}
model = SNMPGetValue(transport, ".1.3.6.1.2.1.25.3.2.1.3.1");
if (model like "*7428*")
{
   return $1;
}
else
{
  trace(1,"Could not read value for ".$node->ipAddr);
  return -1;
}
Title: Re: Фильтр цветных принтеров
Post by: Filipp Sudanov on August 07, 2020, 01:38:31 PM
А как именно ругается? может быть SNMPGetValue не срабатывает и model получается NULL ?
Title: Re: Фильтр цветных принтеров
Post by: TOLeg on August 07, 2020, 02:33:29 PM
Ругается так:
 
Failed to execute autobind script for object 7428 [9255] (Error 5 in line 8: Invalid operation with NULL value)

Решено.
Можно фильтровать по описанию:
return $node->sysDescription like "Xerox WorkCentre 7428*";

можно по snmpOID
return $node->snmpOID == ".1.3.6.1.4.1.253.8.62.1.20.5.3.1";

Если несколько моделей принтеров, то придётся указывать все через &&.
Title: Re: Фильтр цветных принтеров
Post by: Filipp Sudanov on August 07, 2020, 04:53:19 PM
Ну да, если нода не смогла ответить по конкретному SNMP OIDу, то в model получалось null.
Там просто проверку можно добавить, аналогично как проверялось что SNMP транспорт создался:
if (model == null)...