NetXMS Support Forum

Russian Support => Общие вопросы => Topic started by: Argonauts on April 11, 2025, 12:13:50 PM

Title: Disable snmp poll скрипт
Post by: Argonauts on April 11, 2025, 12:13:50 PM
Доброго времени суток.
Увы, плохо ориентируюсь с API, как должна выглядеть первая строка, для выбора нод из конкретного контейнера?

[color=#008000][size=2][font=monospace, monospace][b]from[/b][/font][/size][/color][color=#000000][size=2][font=monospace, monospace] [/font][/size][/color][color=#0000ff][size=2][font=monospace, monospace][b]org.netxms.client.objects[/b][/font][/size][/color][color=#000000][size=2][font=monospace, monospace] [/font][/size][/color][color=#008000][size=2][font=monospace, monospace][b]import[/b][/font][/size][/color][color=#000000][size=2][font=monospace, monospace] Node[/font][/size][/color]
[pre][color=#000000][size=2][font=monospace, monospace][color=#008000][b]for[/b][/color] name [color=#aa22ff][b]in[/b][/color] [color=#008000]open[/color]([color=#ba2121]"nodes.txt"[/color])[color=#666666].[/color]readlines():
    node [color=#666666]=[/color] session[color=#666666].[/color]findObjectByName(name[color=#666666].[/color]strip())
    [color=#008000][b]if[/b][/color] node:
        md [color=#666666]=[/color] NXCObjectModificationData(node[color=#666666].[/color]getObjectId())
        newFlags [color=#666666]=[/color] node[color=#666666].[/color]getFlags() [color=#666666]|[/color] Node[color=#666666].[/color]NF_DISABLE_SNMP
        md[color=#666666].[/color]setObjectFlags(newFlags)
        session[color=#666666].[/color]modifyObject(md)[/font][/size][/color][/pre]


Title: Re: Disable snmp poll скрипт
Post by: Filipp Sudanov on April 12, 2025, 12:37:29 AM
Форматирование несколько побилось движком форума.

Обязательно именно через api? Часто достаточно из nxsl
$node.enableSnmp(false);
такие вещи удобно делать в configuration poll hook script.
Title: Re: Disable snmp poll скрипт
Post by: Argonauts on April 14, 2025, 07:47:50 AM
Нет, не принципиально как. При поиске по форуму наткнулся на ссылку со статьей по автоматизации объемных процессов, там был этот скрипт.
Как предложенный вами вариант должен осуществляться?
Title: Re: Disable snmp poll скрипт
Post by: Filipp Sudanov on April 14, 2025, 05:03:30 PM
В Configuration->Script Library есть скрипт Hook::ConfigurationPoll. В нем дописать

if ($node) {
  $node.enableSnmp(false);
}
Это чтоб для всех нод запретить. Проверка в первой строчке - потому что кроме нод configuration poll бывает еще у сенсоров, кластеров...

Условия, естественно, может делать более сложные, например только для нод на которых есть агент:
if ($node and $node.isAgent) {
  $node.enableSnmp(false);
}
Title: Re: Disable snmp poll скрипт
Post by: Argonauts on April 15, 2025, 06:16:56 AM
Спасибо, почекаю скрипт.
Не нашел в атрибутах node пункта для конкретного контейнера, только вот эти два пункта
physicalContainer ⇒ Object[color=rgba(0, 0, 0, 0.8)][size=3][font=Noto Serif, DejaVu Serif, serif]
[size=2]Physical container object: Rack [url=https://www.netxms.org/documentation/nxsl-latest/#class-netobj][color=#2156a5][u]NetObj[/u][/color][/url] or Chassis [url=https://www.netxms.org/documentation/nxsl-latest/#class-chassis][color=#2156a5][u]Chassis[/u][/color][/url][/size][/font][/size][/color]
physicalContainerId ⇒ Integer[color=rgba(0, 0, 0, 0.8)][size=3][font=Noto Serif, DejaVu Serif, serif]
[size=2]Physical container object id (Rack or Chassis)[/size][/font][/size][/color]

Возможно условие по конкретному контейнеру? Условно выборка по контейнеру "example"
Title: Re: Disable snmp poll скрипт
Post by: Filipp Sudanov on April 30, 2025, 11:39:08 PM
Чтоб проверить, что нода находится под конкретным контейнером (непосредственно, или может быть еще через несколько других контейнеров)
container = FindObject(2); // Infrastructure Services
println($node.isParent(container));
println($node.isDirectParent(container));