Ad Widget

Collapse

Проблема при запуске скриптов PS со start-job

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • xeonkeeper
    Junior Member
    • Sep 2012
    • 27

    #16
    Originally posted by sadman
    Ключ в одинарных кавычках позволяет, по-моему, использовать всё.

    Code:
    zabbix_get -s server -k 'system.run[powershell.exe -nologo -noninteractive -file "c:\program files\zabbix agent\scripts\getcriticalupdates.ps1",nowait]'
    В крайнем случае - system.run["powershell.exe -nologo -noninteractive -file c:\zabbix_scripts\getcriticalupdates.ps1",nowait].
    С одинарными кавычками работает, но такую конструкцию не дает вставить в настройку итема

    Comment

    • Kos
      Senior Member
      Zabbix Certified SpecialistZabbix Certified Professional
      • Aug 2015
      • 3404

      #17
      Я не открою Америки, если скажу, что для ключа элемента данных надо соблюдать определённый формат?

      Попробуйте в настройках указать следующим образом:
      Code:
      system.run["powershell.exe -nologo -noninteractive -file \"c:\zabbix_scripts\getcriticalupdates.ps1\"",nowait]

      Comment

      • sadman
        Senior Member
        • Dec 2010
        • 1611

        #18
        Originally posted by xeonkeeper
        С одинарными кавычками работает, но такую конструкцию не дает вставить в настройку итема
        Естественно. Разбор параметров командной строки башем, пауершеллом и параметров ключа Zabbix-ом - не эквивалентные действия. И тут приходится ломать голову, чтобы всем угодить.

        Для Zabbix строка, заключенная в двойные кавычки, считается одним параметром. Внутри нее могут находится любые символы, включая одинарные кавычки. Т.е. корректно с точки зрения алгоритма смотрелась бы такая конструкция в ключе элемента данных: system.run["powershell.exe -NoLogo -NonInteractive -File 'C:\Program Files\Zabbix Agent\scripts\getcriticalupdates.ps1',nowait]. Но проблема в том, что по PoSH тоже хочет двойные кавычки вокруг параметров. И винда хочет двойные кавычки вокруг строк с пробелами и прочими спецсимволами. А уж какие фокусы откалывает VBS - вам лучше не знать. Но заббикс считает, что вторая двойная кавычка заканчивает строку. Проблема? Да. Но в программировании есть такая штука, как экранирование. И, слава богу, этот фокус тут прокатывает: system.run["powershell.exe -NoLogo -NonInteractive -File \"C:\Program Files\Zabbix Agent\scripts\getcriticalupdates.ps1\"",nowait].

        P.S. Может, даже и вот так пойдет: system.run['powershell.exe -NoLogo -NonInteractive -File "C:\Program Files\Zabbix Agent\scripts\getcriticalupdates.ps1"',nowait] . Экспериментируйте.
        P.P.S. Из документации по ссылке @Kos - одинарными кавычками обрамлять параметр нельзя.
        Last edited by sadman; 11-11-2016, 15:56.

        Comment

        Working...