Quote from: wonderboy on January 15, 2010, 03:04:02 PM
Спасибо за помощь, но сразу возник еще один вопрос.
Так как на разном оборудовании разные порты могут быть серверными, транковыми и т.д.
Решил в дескрипшенах писать что-то типа Trunk ... , User ... , Server ...
И иметь всего 3 правила на все устройства.
Пишу в политике для эвента SYS_IF_DOWN скрипт ($2 - содержит имя интерфейса в указанном выше формате):Code Selectsub main() {
if ($2 ~= "Trunk")
{
return 1;
}
}
Но вот видимо не срабатывает, потому что алярмы свой приоритет не меняют.
PS: Stdout куда выводятся print, println это где? Куда нужно смотреть?
Скрипт выглядит правильно. Stdout доступен только если скрипт запущен через nxscript. Приведенный выше скрипт можно протестировать например так:
1. создать файл test.nxsl, скопировать в него скрипт;
2. запустить команду
Code Select
nxscript -r test.nxsl param1 param2
Результат будет примерно такой:
Code Select
C:\Source\NetXMS\debug>nxscript -r test6.nxsl param1 param2
NetXMS Scripting Host Version 1.1.0-rc10
Copyright (c) 2005-2009 Victor Kirhenshtein
Result = (null)
C:\Source\NetXMS\debug>
C:\Source\NetXMS\debug>nxscript -r test6.nxsl param1 Trunk
NetXMS Scripting Host Version 1.1.0-rc10
Copyright (c) 2005-2009 Victor Kirhenshtein
Result = 1
C:\Source\NetXMS\debug>
Если в скрипте для отладки нужна печать на экран, то можно использовать print / println:
Code Select
sub main()
{
println "$2='" . $2 . "'";
if ($2 ~= "Trunk")
{
println "match";
return 1;
}
println "no match";
}
Получим
Code Select
C:\Source\NetXMS\debug>nxscript -r test6.nxsl param1 param2
NetXMS Scripting Host Version 1.1.0-rc10
Copyright (c) 2005-2009 Victor Kirhenshtein
$2='param2'
no match
Result = (null)
C:\Source\NetXMS\debug>
C:\Source\NetXMS\debug>nxscript -r test6.nxsl param1 Trunk
NetXMS Scripting Host Version 1.1.0-rc10
Copyright (c) 2005-2009 Victor Kirhenshtein
$2='Trunk'
match
Result = 1
C:\Source\NetXMS\debug>
