From 033510c64d9f43159b7de1374f5cabb45be2ba1e Mon Sep 17 00:00:00 2001 From: rrg92 Date: Fri, 8 Sep 2017 15:50:37 -0300 Subject: [PATCH] Added Get-ZabbixTrigger and Update-ZabbixTrigger --- power-zabbix.hlink.ps1 | 341 ++++++++++++++++++++++++++++++++++++----- power-zabbix.psm1 | Bin 46075 -> 132006 bytes 2 files changed, 306 insertions(+), 35 deletions(-) diff --git a/power-zabbix.hlink.ps1 b/power-zabbix.hlink.ps1 index 0e6563f..8964758 100644 --- a/power-zabbix.hlink.ps1 +++ b/power-zabbix.hlink.ps1 @@ -368,6 +368,8 @@ $ErrorActionPreference= "Stop"; ,$APIParams = @{} ) + $Options.params.add("filter",@{}); + #Determinando searchByAny if($APIParams.common.searchByAny){ $Options.params.add("searchByAny", $true); @@ -396,9 +398,7 @@ $ErrorActionPreference= "Stop"; }); } elseif($APIParams.props.name) { - $Options.params.add("filter",@{ - name = $APIParams.props.name - }); + $Options.params.filter["name"] = $APIParams.props.name } return; @@ -878,6 +878,44 @@ $ErrorActionPreference= "Stop"; } + #Converts a lot of host names to respectiv ids! + #The returned object is a array of hashtable containing the hostid key. + Function ConvertHostNames2Ids { + param($Names, [switch]$ReturnNames = $false) + + write-verbose "ConvertHostNames2Ids: Castings groups to groups ids..." + $HostIds = ZabbixAPI_List2Ids $Names { + param($HostNames) + + $Found = @(); + + $Found = Get-ZabbixHost -Name $HostNames -Output @('hostid','name') | %{ + New-Object PSObject -Prop @{id=$_.hostid;name=$_.name}; + } + + return $Found; + }; + + $NewGroups = @(); + if($HostIds){ + $HostIds | %{ + $NewId = @{hostid = [int]$_.id}; + + if($ReturnNames){ + $NewId['name'] = $_.name; + } + + $NewGroups += $NewId; + } + } else { + throw "GROUPS_NOT_FOUND: $Names"; + } + + write-verbose "ConvertHostNames2Ids: Hosts add casted sucessfully!"; + return $NewGroups; + } + + #Converts a lot of groups names to respectiv ids! #The returned object is a array of hashtable containing the groupid key. Function ConvertGroupNames2Ids { @@ -984,6 +1022,8 @@ $ErrorActionPreference= "Stop"; ,[switch]$StartSearch = $false ,$output = $null ,$SelectGroups = $false + ,$SelectInterfaces = $false + ,$HostStatus = $null ) @@ -995,6 +1035,7 @@ $ErrorActionPreference= "Stop"; searchByAny = $SearchByAny startSearch = $StartSearch output = $output + "filter" = $filter } props = @{ @@ -1010,6 +1051,14 @@ $ErrorActionPreference= "Stop"; $APIParams.params.add("selectGroups", $SelectGroups) } + if($SelectInterfaces){ + $APIParams.params.add("selectInterfaces", $SelectInterfaces) + } + + if($HostStatus -ne $null){ + $APIParams.params.filter.add("status", ([int]$HostStatus) ) + } + #If groups was specified, convert it to group names... if($Groups){ write-verbose "Get-ZabbixHost: About to convert group names to ids" @@ -1441,42 +1490,18 @@ $ErrorActionPreference= "Stop"; } if($Hosts){ - write-verbose "Get-ZabbixEvent: Castings groups to hosts ids..." - [int[]]$HostIds = ZabbixAPI_List2Ids $Hosts { - param($HostNames) - - $Found = @(); - Get-ZabbixHost -Name $HostNames -output @('hostid','name') | %{ - New-Object PSObject -Prop @{id=$_.hostid;name=$_.name}; - } - - return $Found; - - }; - $APIParams.params.add("hostids", $HostsIds); - write-verbose "Get-ZabbixEvent: Hosts add casted sucessfully!" + write-verbose "Get-ZabbixEvent: Castings hosts to groups ids..." + [hashtable[]]$HostsIds = ConvertHostNames2Ids $Hosts; + [int[]]$hostids = @($HostsIds | %{$_.hostid}); + $APIParams.params.add("hostids", $hostids ) + write-verbose "Get-ZabbixEvent: Groups add casted sucessfully!" } if($Groups){ write-verbose "Get-ZabbixEvent: Castings groups to groups ids..." - [int[]]$GroupIds = ZabbixAPI_List2Ids $Groups { - param($GroupNames) - - $Found = @(); - - $Found = Get-ZabbixHostGroup -Name $GroupNames -Output @('groupid','name') | %{ - New-Object PSObject -Prop @{id=$_.groupid;name=$_.name}; - } - - return $FOund; - }; - - if($GroupIDs){ - $APIParams.params.add("groupids", $GroupIds); - } else { - throw "GROUPS_NOT_FOUND: $Groups"; - } - + [hashtable[]]$GroupsID = ConvertGroupNames2Ids $Groups; + [int[]]$groupsids = @($GroupsID | %{$_.groupid}); + $APIParams.params.add("groupids", $groupsids ) write-verbose "Get-ZabbixEvent: Groups add casted sucessfully!" } @@ -1664,6 +1689,252 @@ $ErrorActionPreference= "Stop"; return $ResultsObjects; } +######### ITEM + + #Equivalente ao método da API item.get + #https://www.zabbix.com/documentation/2.0/manual/appendix/api/item/get + Function Get-ZabbixItem { + [CmdLetBinding()] + param( + $name = $null + ,[int[]]$Id = @() + ,$Hosts = @() + ,$Groups = @() + ,$selectHosts = $null + ,$selectTriggers = $null + ,$limit = $null + ,[switch]$Search = $false + ,[switch]$SearchByAny = $false + ,[switch]$StartSearch = $false + ,$output = $null + ) + + + + #Determinando searchByAny + [hashtable]$APIParams = ZabbixAPI_NewParams "item.get" + ZabbixAPI_Get $APIParams -APIParams @{ + common = @{ + search = $Search + searchByAny = $SearchByAny + startSearch = $StartSearch + limit = $limit + output = $output + } + + + props = @{ + name = $Name + } + } + + + + if($Id){ + $APIParams.params.add("itemids", $Id ); + } + + if($Hosts){ + $NamesToConvert = @(); + [int[]]$hostids = $Hosts | %{ + if($_.hostid){ + return $_.hostid; + } else { + if ($_ -is [string]){ + $NamesToConvert += $_; + } else { + return [int]$_; + } + } + } + + if($NamesToConvert){ + write-verbose "Get-ZabbixItem: Castings hosts to groups ids..." + [hashtable[]]$ConvertedHosts = ConvertHostNames2Ids $NamesToConvert; + $hostids += @($ConvertedHosts | %{$_.hostid}); + } + + $APIParams.params.add("hostids", $hostids ) + write-verbose "Get-ZabbixItem: Groups add casted sucessfully!" + } + + if($Groups){ + $NamesToConvert = @(); + [int[]]$groupsids = $Groups | %{ + if($_.groupid){ + return $_.groupid; + } else { + if ($_ -is [string]){ + $NamesToConvert += $_; + } else { + return [int]$_; + } + } + } + + if($NamesToConvert){ + write-verbose "Get-ZabbixItem: Castings hosts to groups ids..." + [hashtable[]]$ConvertedGroups = ConvertGroupNames2Ids $NamesToConvert; + $groupsids += @($ConvertedGroups | %{$_.groupid}); + } + + $APIParams.params.add("groupids", $groupsids ) + write-verbose "Get-ZabbixItem: Groups add casted sucessfully!" + } + + + if($selectHosts){ + $APIParams.params.add("selectHosts", $selectHosts); + } + + if($selectTriggers){ + $APIParams.params.add("selectTriggers", $selectTriggers); + } + + + + write-verbose "Get-ZabbixItem: About to generate json from apiparams!" + $APIString = ConvertToJson $APIParams; + write-verbose "JSON is: $APIString"; + + #Chama a Url + $resp = CallZabbixURL -data $APIString; + $resultado = TranslateZabbixJson $resp; + + + $ResultsObjects = @(); + if($resultado){ + $resultado | %{ + $r = NEw-Object PSObject -Prop $_; + + #Adiciona o datetime local... + if($r | gm "clock"){ + $r | Add-Member -Type Noteproperty -Name "datetime" -Value (UnixTime2LocalTime $r.clock) + } + + $ResultsObjects += $r; + } + } + + return $ResultsObjects; + } + +######### HISTORY + #Equivalente ao método da API history.get + #https://www.zabbix.com/documentation/2.0/manual/appendix/api/history/get + Function Get-ZabbixHistory { + [CmdLetBinding()] + param( + [int]$history = $null + ,$Hosts = @() + ,$Items = @() + ,$TimeFrom = $null + ,$TimeTill = $null + ,$limit = $null + ) + + + #Determinando searchByAny + [hashtable]$APIParams = ZabbixAPI_NewParams "history.get" + ZabbixAPI_Get $APIParams -APIParams @{ + common = @{ + search = $false + searchByAny = $false + startSearch = $false + limit = $limit + } + } + + if($TimeFrom){ + [string]$TimeFromFilter = ""; + if($TimeFrom -is [int]){ + $TimeFromFilter = $TimeFrom; + } else { + $TimeFromFilter = Datetime2Unix $TimeFrom; + } + + $APIParams.params.add("time_from", $TimeFromFilter); + } + + if($TimeTill){ + [string]$TimeTillFilter = ""; + if($TimeTill -is [int]){ + $TimeTillFilter = $TimeTill; + } else { + $TimeTillFilter = Datetime2Unix $TimeTill; + } + + $APIParams.params.add("time_till", $TimeTillFilter ); + } + + if($Hosts){ + $NamesToConvert = @(); + [int[]]$hostids = $Hosts | %{ + if($_.hostid){ + return $_.hostid; + } else { + if ($_ -is [string]){ + $NamesToConvert += $_; + } else { + return [int]$_; + } + } + } + + if($NamesToConvert){ + write-verbose "Get-ZabbixHistory: Castings hosts to groups ids..." + [hashtable[]]$ConvertedHosts = ConvertHostNames2Ids $NamesToConvert; + $hostids += @($ConvertedHosts | %{$_.hostid}); + } + + $APIParams.params.add("hostids", $hostids ) + write-verbose "Get-ZabbixHistory: Groups add casted sucessfully!" + } + + if($Items){ + [int[]]$itemids = @(); + + $Items | %{ + if($_.itemid){ + $itemids += $_.itemid + } else { + $itemids += [int]$_; + } + } + + $APIParams.params.add("itemids", $itemids ) + } + + if($history){ + $APIParams.params.add("history", $history ) + } + + write-verbose "Get-ZabbixHistory: About to generate json from apiparams!" + $APIString = ConvertToJson $APIParams; + write-verbose "JSON is: $APIString"; + + #Chama a Url + $resp = CallZabbixURL -data $APIString; + $resultado = TranslateZabbixJson $resp; + + + $ResultsObjects = @(); + if($resultado){ + $resultado | %{ + $r = New-Object PSObject -Prop $_; + + #Adiciona o datetime local... + if($r | gm "clock"){ + $r | Add-Member -Type Noteproperty -Name "datetime" -Value (UnixTime2LocalTime $r.clock) + } + + $ResultsObjects += $r; + } + } + + return $ResultsObjects; + } + ############# FRONTEND cmdlets ############### #######Starting at this point, some calls to frontend to workaround some functionality that API dont support.################ diff --git a/power-zabbix.psm1 b/power-zabbix.psm1 index 0e6563f2a18a7bd49d5ee20889702c8967d56672..e754187079d0aaf0324bd5513ce21e9bbcfab08e 100644 GIT binary patch literal 132006 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 literal 46075 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 BR9^r9