Powershell - 如何使用webclient登录网页(Cacti)

时间:2014-03-17 15:45:21

标签: powershell webclient cacti

有谁知道如何使用webclient登录Cacti?
我正在尝试使用PowerShell登录网站(领域:本地) 但是我坚持登录页面 enter image description here

此页面的Html代码:

<tr>
    <td colspan="2">Please enter your user name and password below:</td>
</tr>
<tr style="height: 10px;"><td></td></tr>
<tr>
    <td>User Name:</td>
    <td><input name="login_username" style="width: 295px;" type="text" size="40" value=""></td>
</tr>
<tr>
    <td>Password:</td>
    <td><input name="login_password" style="width: 295px;" type="password" size="40"></td>
</tr>
<tr>
    <td>Realm:</td>
    <td>
        <select name="realm" style="width: 295px;"><option value="local">Local</option><option value="ldap" selected="">LDAP</option>
        </select>
    </td>
</tr>
    <tr style="height: 10px;"><td></td></tr>
<tr>
    <td><input type="submit" value="Login"></td>
</tr>   

这是我的powershell代码:

$username="MyAccount"
$passowrd="MyPassowrd"
$realm="local"

$webclient = new-object System.Net.WebClient
$webclient.Credentials = new-object System.Net.NetworkCredential($username, $password, $realm)
$webclient.DownloadFile($url, "C:\temp\test.jpg")

1 个答案:

答案 0 :(得分:1)

我意识到这不是你要求的,因为你特别询问了webclient解决方案,但是因为这是我个人经历过的,所以我可以给你。使用Internet Explorer Com对象,您可以加载页面,选择所需的对象并设置其值。我没有在那里看到提交按钮的HTML,但我确信你可以找到它的名称并更新我在这里的代码。我将按钮名称保留为LoginBtn,因为它对我的脚本来说是什么。显然你也需要更新URL,因为我怀疑你的实际登录页面的URL是“pokey.cacti.com/login”。

$IE = New-Object -ComObject InternetExplorer.Application
Do {Start-Sleep 1} Until (!($IE.Busy))
$IE.Navigate('https://pokey.cacti.com/login')
Do {Start-Sleep 1} Until (!($IE.Busy))
$Doc = $IE.Document
$UserNameField = $Doc.getElementById('login_username')
$UserNameField.value = $username
$PassField = $Doc.getElementById('login_password')
$PassField.value = $password
$RealmDropdown = $Doc.getElementById('realm')
$RealmDropdown.value = 'Local'
$LoginButton = $Doc.getElementById('LoginBtn')
$LoginButton.setActive()
$LoginButton.click()

希望这对您来说是一种解决方法。显然我需要查看WebClient命名空间,因为它可能是我的一些需求的更好选择,但到目前为止,com对象对我有用,并且希望也适合你。

好的,所以你想要拍照。我在这里假设您使用Win7或更高版本,所以如果不是这样,请告诉我。无论如何,假设加载BITS模块下载图片。

Import-Module BitsTransfer
$display = $url.Split('/')[-1]
Start-BITSTransfer $url 'C:\temp\test.jpg' -Prio High -Display $display