2013-08-23 64 views
0

我試圖使用powershell來自動創建報告工具。我需要得到Zabbix(v1.8)圖形圖像。由於它不能通過API,我必須連接到URL,然後獲取圖表。Powershell,invoke-webrequest ...和Zabbix

這是我的代碼:

$zabbixLoginUrl = "http://zabfront-eqx.noc.lan/zabbix/index.php?login=1" 
$zabbixGraphUrl = "http://zabfront-eqx.noc.lan/zabbix/chart2.php?graphid=" 
$userName = "username" 
$userPwd = "pwd" 

$loginPostData = @{name=$userName;password=$userPwd;enter="Enter"} 
$login = Invoke-WebRequest -Uri $zabbixLoginUrl -Method Post -Body $loginPostData -SessionVariable sessionZabbix 

#let's see if we have a cookie set 
if ($sessionZabbix.Cookies.Count -eq 0) { 
    Write-Host "fail to connect" 
    break 
} 
else {Write-Host "connected"} 


#now let's retrieve the graph #4433 using the priviously established session 
$graph = Invoke-WebRequest -Uri ($zabbixGraphUrl+"4433") -WebSession $sessionZabbix 

我可以連接並得到一個cookie:

$sessionZabbix.Cookies.GetCookies("http://zabfront-eqx.noc.lan/zabbix/index.php") | select name, value 

    Name                    Value                    
    ----                    -----                    
    zbx_sessionid                  b2451e6c7fd0767dec22cca46427b7c2             

不幸的是$圖形不包含 「圖像」 屬性和 「內容」 idicates我是未連接:

$graph.Images.Count 
0 

$graph.Content 
[...] 
<span class="footer_sign">Not connected</span> 

任何人都知道我做錯了什麼?

感謝

+0

所以,我打開了Wireshark的廣告明確的cookie的一部分GET請求丟失...我沒有得到它... – simsaull

+0

何等待,也許這是因爲我沒有使用相同的網址(/zabbix/index.php vs /zabbix/charts2.php),所以item.path屬性不匹配?但那麼我怎樣才能使用我的cookie反對/zabbix/charts2.php網址?? – simsaull

回答

0

所以我得到它的工作: 我需要使用相同的SessionID設置爲圖形URL一個cookie:

$sessionZabbix.Cookies.SetCookies("http://zabfront-eqx.noc.lan/zabbix/chart2.php", $sessionZabbix.Cookies.GetCookieHeader($zabbixLoginUrl))