Disable snmp poll скрипт

Started by Argonauts, April 11, 2025, 12:13:50 PM

Previous topic - Next topic

Argonauts

Доброго времени суток.
Увы, плохо ориентируюсь с 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]



Filipp Sudanov

Форматирование несколько побилось движком форума.

Обязательно именно через api? Часто достаточно из nxsl
$node.enableSnmp(false);
такие вещи удобно делать в configuration poll hook script.

Argonauts

Нет, не принципиально как. При поиске по форуму наткнулся на ссылку со статьей по автоматизации объемных процессов, там был этот скрипт.
Как предложенный вами вариант должен осуществляться?

Filipp Sudanov

В Configuration->Script Library есть скрипт Hook::ConfigurationPoll. В нем дописать

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

Условия, естественно, может делать более сложные, например только для нод на которых есть агент:
if ($node and $node.isAgent) {
  $node.enableSnmp(false);
}

Argonauts

Спасибо, почекаю скрипт.
Не нашел в атрибутах 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"

Filipp Sudanov

Чтоб проверить, что нода находится под конкретным контейнером (непосредственно, или может быть еще через несколько других контейнеров)
container = FindObject(2); // Infrastructure Services
println($node.isParent(container));
println($node.isDirectParent(container));