微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 Streamreader 的 Powershell API

如何解决使用 Streamreader 的 Powershell API

我正在尝试编写一个 powershell 脚本,该脚本可以通过 ssh 连接到各种相机服务器,并使用 API 从服务器应用程序下载系统日志,然后通过 sftp 将它们发送回我们的系统日志服务器。我在这个空间相对绿色,所以请放轻松。 API 部分有问题。

API 使用基本身份验证进行身份验证,我可以在邮递员中使其在本地工作。第一部分抓取所有用户并解析出用户名,这似乎工作正常。后半部分应该获取指定用户的系统日志,但我收到超时错误

使用“0”个参数调用“ReadToEnd”的异常:“无法从 传输连接:连接尝试失败,因为连接方做了 一段时间后没有正确响应,或建立连接失败 因为连接的主机未能响应。”

#Authenticate to API and get users and Parse out ID
$webRequest = [System.Net.WebRequest]::Create("http://localhost/media/usergroup/getuser")
$webRequest.Credentials = New-Object System.Net.NetworkCredential($username,$password)
$webRequest.Timeout = 300 #milliseconds
$webResponse = $webRequest.GetResponse()
$sr = New-Object System.IO.StreamReader($webResponse.GetResponseStream())
$output = [xml]$sr.ReadToEnd()
$naq_uid = $output.UserConfig.Users.ChildNodes | Select-Object id
$naq_uid

#pull syslog for each user (admin)
$sysLogRequest = [System.Net.WebRequest]::Create("http://localhost/media/systemlog/Search?userid=admin&starttime=1622576396&endtime=1622749196")
$sysLogRequest.Credentials = New-Object System.Net.NetworkCredential($username,$password)
$sysLogRequest.Timeout = 300 #milliseconds
$sysLogResponse = $sysLogRequest.GetResponse()
$sr = New-Object System.IO.StreamReader($sysLogResponse.GetResponseStream())
$syslogoutput = [xml]$sr.ReadToEnd()
$syslogoutput

我也尝试过使用 Invoke-RestMethod/Invoke-WebRequestMethods,但遇到了无效操作错误。当我用另一种方法工作时,我停止了这条轨道,但如果这更好,那么我很乐意改变它。

$credPair  = $($username + ':' + $($password))
$encodedCredentials = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes($credPair))
$header = @{Authorization = "Basic $encodedCredentials"}
Invoke-RestMethod -Uri $uri -Method GET -Headers $header

任何指导将不胜感激。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。