提问人:goran.q 提问时间:7/14/2023 最后编辑:goran.q 更新时间:7/14/2023 访问量:75
可能的cookie问题/在Zabbix v6 LTS中从Powershell v7访问chart2.php
Possible cookie problem / access to chart2.php from Powershell v7 in Zabbix v6 LTS
问:
我们正在使用Zabbix 5 LTS版本,并通过Powershell进行报告,其中包括将图形检索为PNG文件。 基本上,我们像这样在Zabbix server上进行身份验证 (我们使用了这个但自定义的脚本:https://gist.github.com/r-plus/0a2a4abd6c24eb647846)
$authJSON = $baseJSON.clone();
$authJSON.method = "user.login";`
$authJSON.params = @{ "user" = $zabbixServerUsernameInput; "password"=$zabbixServerPasswordInput };`
$login = Invoke-RestMethod -Uri $zabbixServerApiUrl -Body ($authJSON | ConvertTo-Json) -method POST -ContentType "application/json";``
然后在会话中使用 $login.result 作为 cookie
$zabbixDomain = $zabbixServerUrl;`
$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);`
例如,在访问图形 URL 时,此会话工作正常
Invoke-WebRequest -Uri http://IP-ADDRESS/zabbix/chart2.php?...ight=100&legen d=0&from=now-30d&to=now&profileIdx=web.graphs.filter -WebSession $session -Outfile $graphCurrentFile;`
使用此会话参数访问图形 URL 时,可以看到创建了新的 cookie (PHPSESSID),并且一切正常。 这在Zabbix 5 LTS中工作正常。 这在Zabbix 6 LTS中不起作用。在 v6 中,我们在访问图形 URL 时收到“您未登录”响应。
在 v5 中查看 cookie 时,我们有这个(这有效):
$session.Cookies.GetCookies("http://IP-ADDRESS/zabbix")`
Comment :
CommentUri :
HttpOnly : True
Discard : False
Domain : IP-ADDRESS
Expired : False
Expires : 1.1.0001. 0:00:00
Name : zbx_sessionid
Path : /zabbix
Port :
Secure : False
TimeStamp : 12.7.2023. 11:18:24
Value : 5522f93476ba60eed3263ffb67eb22e
Version : 0
Comment :
CommentUri :
HttpOnly : True
Discard : False
Domain : IP-ADDRESS
Expired : False
Expires : 1.1.0001. 0:00:00
Name : PHPSESSID
Path : /zabbix
Port :
Secure : False
TimeStamp : 12.7.2023. 9:51:14
Value : sh5h52fgthz7qf5iiq03vp3f8f
Version : 0
在 v6 中查看 cookie 时,我们有这个(这不起作用):
$session.Cookies.GetCookies("http://IP-ADDRESS/zabbix")`
Comment :
CommentUri :
HttpOnly : False
Discard : False
Domain : IP-ADDRESS
Expired : False
Expires : 1.1.0001. 0:00:00
Name : zbx_sessionid
Path : /zabbix
Port :
Secure : False
TimeStamp : 12.7.2023. 12:38:42
Value : 39dafb464rft76299b7947ef9960497e
Version : 0
Comment :
CommentUri :
HttpOnly : True
Discard : False
Domain : IP-ADDRESS
Expired : False
Expires : 1.1.0001. 0:00:00
Name : zbx_session
Path : /zabbix
Port :
Secure : False
TimeStamp : 12.7.2023. 12:38:54
Value : eyJzZXNzaW9uaWQiOiI5YTMzftgrhZmZjA0OWVkNWZiMzMyMT ZjZTllYmE5ZiIsInNpZ24iOiIzYThhOGdrtbmkmI0ODczYmJl NjBkMmM5NjNkOGE1ODM1MzI4NGU5Y2EzY412OWRmYWRlNDQxMz FmYjc1NWY5In0%3D
Version : 0
什么都试过了。最后,在我看来,问题出在版本 5 和 6 中的 cookie 格式上,我不确定。 文档说 v6 使用 cookie“存储为 base64 编码的 JSON”,而 v5 使用“32 个字符的字符串”。 我没有成功地在 Invoke-WebRequest 中使用的 cookie Powershell (v7) 中使用 base64 转换这个长 cookie 值,我什至不确定是不是这个问题。
所以,我最后的问题
有没有人有解决方案从 Powershell 访问 zabbix 6 图形 URL(例如 http://IP-ADDRESS/zabbix/chart2.php?graphid=3004)并以任何方式进行身份验证(如果无法使用 cookie,则使用用户/密码...... 欢迎任何建议
谢谢 戈兰
试: 仅为图形会话生成 cookie 更改图形 URL 的 API 会话的 Cookie 在 7.3.5 上更新 Powershell
答: 暂无答案
评论