Доброго времени суток.
Увы, плохо ориентируюсь с 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]
Форматирование несколько побилось движком форума.
Обязательно именно через api? Часто достаточно из nxsl
$node.enableSnmp(false);
такие вещи удобно делать в configuration poll hook script.
Нет, не принципиально как. При поиске по форуму наткнулся на ссылку со статьей по автоматизации объемных процессов, там был этот скрипт.
Как предложенный вами вариант должен осуществляться?
В Configuration->Script Library есть скрипт Hook::ConfigurationPoll. В нем дописать
if ($node) {
$node.enableSnmp(false);
}Это чтоб для всех нод запретить. Проверка в первой строчке - потому что кроме нод configuration poll бывает еще у сенсоров, кластеров...
Условия, естественно, может делать более сложные, например только для нод на которых есть агент:
if ($node and $node.isAgent) {
$node.enableSnmp(false);
}
Спасибо, почекаю скрипт.
Не нашел в атрибутах 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"
Чтоб проверить, что нода находится под конкретным контейнером (непосредственно, или может быть еще через несколько других контейнеров)
container = FindObject(2); // Infrastructure Services
println($node.isParent(container));
println($node.isDirectParent(container));