Ad Widget

Collapse

Zabbix API PowerShell

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Randomiser
    Junior Member
    • May 2016
    • 9

    #1

    Zabbix API PowerShell

    Приветствую. Установлен zabbix 4.4.4
    Подскажите что я делаю не так. Хочу выгрузить все хосты с tag VCS:test

    $baseurl = 'http://192.168.10.100/zabbix'
    $params = @{
    body = @{
    "jsonrpc"= "2.0"
    "method"= "user.login"
    "params"= @{
    "user"= "admin"
    "password"= "admin"
    }
    "id"= 1
    "auth"= $null
    } | ConvertTo-Json
    uri = "$baseurl/api_jsonrpc.php"
    headers = @{"Content-Type" = "application/json"}
    method = "Post"
    }

    $result = Invoke-WebRequest @params



    $params.body = @{
    "jsonrpc"= "2.0"
    "method"= "host.get"
    "params"= @{
    output = "hostid"
    selectTags = "extend"
    evaltype = 0
    tags = @{
    tag="VCS";
    value="test";
    operator="1"
    }

    }
    auth = ($result.Content | ConvertFrom-Json).result
    id = 1
    } | ConvertTo-Json

    $result = Invoke-WebRequest @params
    $result = $result.Content | ConvertFrom-Json

    Возвращается пустота.
  • ysus
    Senior Member
    • Mar 2016
    • 100

    #2
    Вот рабочий шаблон https://gist.github.com/r-plus/0a2a4abd6c24eb647846

    Comment

    • Randomiser
      Junior Member
      • May 2016
      • 9

      #3
      Originally posted by ysus
      Вот рабочий шаблон https://gist.github.com/r-plus/0a2a4abd6c24eb647846
      # Zabbix graph save script.
      # Required PowerShell v3.0 or later.

      # variables.
      $zabbixURL = "http://192.168.10.100/zabbix/"
      $zabbixAPIURL = $zabbixURL + "api_jsonrpc.php"
      $zabbixGraphURL = $zabbixURL + "chart2.php?graphid="
      $baseJSON = @{ "jsonrpc" = "2.0"; "id" = 1 }

      # Get login token.
      $authJSON = $baseJSON.clone()
      $authJSON.method = "user.login"
      $authJSON.params = @{ "user" = "admin"; "password" = "admin" }
      $login = Invoke-RestMethod -Uri $zabbixAPIURL -Body ($authJSON | ConvertTo-Json) -method POST -ContentType "application/json"
      $baseJSON.auth = $login.result

      # Set Cookie.
      $zabbixDomain = $zabbixURL
      $session = New-Object -TypeName Microsoft.PowerShell.Commands.WebRequestSession
      $cookie = New-Object -TypeName System.Net.Cookie
      $cookie.Name = "zbx_sessionid"
      $cookie.Value = $login.result
      $session.Cookies.Add($zabbixDomain,$cookie)

      # get hostids
      $hostGetJSON = $baseJSON.clone()
      $hostGetJSON.method = "host.get"
      $hostGetJSON.params = @{ "output" = "extend"; "selectTags" = "extend"; "evaltype" = 0; "tags" = @{"tag"="VCS"; value="test"; "operator"=0} }
      $hostGetResult = Invoke-WebRequest -Uri $zabbixAPIURL -WebSession $session -Body ($hostGetJSON | ConvertTo-Json) -method POST -ContentType "application/json"
      $hosts = ($hostGetResult.toString() | ConvertFrom-Json).result

      Добавил фильтр по тегам и тоже самое пустота. Без фильтра норм возвращает все узлы

      Comment

      Working...