【问题标题】:Enter ip address in http request in powershell在powershell的http请求中输入ip地址
【发布时间】:2012-06-23 19:13:15
【问题描述】:

我正在尝试测试负载平衡器后面的网页的可用性。所以我想编写一个powershell脚本来分别从每个Web服务器加载一个页面。问题是服务器使用主机头,所以我不能手动指定 ip 地址,也不能只使用 url,因为它可能会负载平衡到不同的服务器。理想情况下,我正在寻找这样的东西。

$wc = New-Object net.webclient
$wc.downloadString("10.0.0.1", "http://test.com/home.html")

但我不知道该怎么做。我更喜欢 powershell,但如果有另一个 Windows 实用程序可以完成这项工作,我会接受这个想法。

【问题讨论】:

  • 使用服务器名称作为 $wc.downloadString("h ttp://servername/home.html") ?
  • 无法工作,因为我可能会被发送到错误的 Web 服务器。尝试解析主机名可以为我提供任何一个 Web 服务器的 IP 地址。我想准确地指定我连接到哪个服务器。
  • a ping -a 10.0.0.1 没有解析到这个ip的服务器名?
  • 好主意,但是 Web 服务器的 IP 地址转换为服务器名称,而不是网站名称。例如ping -a 10.0.0.1 返回“webserver1”而不是 www.website.com。现在,网站名称转换为负载均衡器的 IP 地址。

标签: windows powershell


【解决方案1】:

我知道这是一个老问题,但我最近需要自己完成这个问题,并偶然发现了这个问题以寻找解决方案。我没有在其他地方找到答案,但我自己找到了答案,并想分享一下,以防有人需要这样做。

您需要做的是在通过 IP 进行调用之前添加一个 Headers 值来指定您的主机:

$wc = New-Object net.webclient
$wc.Headers.Add("Host", "test.com")
$wc.DownloadString("http://10.0.0.1/home.html")

这告诉 WebClient 调用将页面请求发送到哪个服务器,同时仍然确保请求成功解析,因为它也具有主机头信息。

*请记住,如果您根据自己的需要进行调整,每次进行 WebClient 调用时,Headers 值都会被重置。所以一定要同时执行 $wc.Headers.Add() 和 $wc.DownloadString() 。

【讨论】:

    猜你喜欢
    • 2010-11-13
    • 2013-03-18
    • 2023-03-03
    • 1970-01-01
    • 2014-11-21
    • 2015-08-31
    • 2011-07-31
    • 2018-04-02
    • 1970-01-01
    相关资源
    最近更新 更多