当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 在 PowerShell 中开发 HTTP 监视器

作者:精品下载站 日期:2024-12-14 20:47:55 浏览:15 分类:玩电脑

在 PowerShell 中开发 HTTP 监视器


您如何将 Web 服务器定义为“正常运行”?它不仅仅响应简单的互联网控制消息协议 (ICMP) 回显请求 (ping),更重要的是,HTTP 监视器显示为关闭。这就是 PowerShell 脚本的用武之地。

监控系统时,跟踪尽可能接近真实的服务非常重要。在 Web 服务器的情况下,该服务是 HTTP 请求。

Web 请求由许多相互依赖的部分组成,包括连接到网络的服务器、具有 MAC 地址、IP 地址、侦听端口 80 的 TCP 端口,以及在此堆栈顶部的 HTTP服务器返回的状态码。尽可能靠近服务进行监控非常重要,因此让我们重点关注 HTTP 状态代码。

构建 HTTP 监视器

有多种方法可以监控 Web 服务器返回的状态代码。我们将重点关注滚动命令行脚本,这是增量构建某些功能的绝佳方法。

为了创建这些脚本,我总是使用 PowerShell。它是一种出色的脚本语言,也是 Windows 世界事实上的标准。

由于 PowerShell 本身没有可以从 Web 服务器获取 HTTP 状态代码的命令,因此我们需要采用标准方法并使用 .NET 对象。由于 PowerShell 脚本最终构建在 .NET 框架之上,因此这是一项微不足道的任务。

首先,我们需要使用 System.Net.WebRequest 对象。特别是,您需要调用一个名为 Create 的静态方法并将 URL 传递给该方法来构建请求。

$req = [system.Net.WebRequest]::Create('http://www.google.com')

您还可以使用 PowerShell 的 Invoke-WebRequest 来完成此任务。请查看 ATA 博客上的深入文章了解更多信息。

提出请求

您可以在上面看到我正在为 google.com 创建一个网络请求。如果您查看请求,您将看到许多将用于发出请求的常见属性。

但代码还没有太多。它实际上还不是一个 HTTP 监视器。我仍然需要向 Google 的网络服务器发出实际请求并获得响应。为此,我需要使用 GetResponse() 方法。这会发出请求并从 Web 服务器返回响应。

$res = $req.GetResponse()

您现在可以看到所有信息都已返回。请注意,$res 对象有一个 StatusCode 属性——这就是我们要寻找的。此时,我们可以保持原样并在更大的脚本中使用此代码,或者通过以点表示法引用它来单独提取 StatusCode

$res.StatusCode

分配一个整数

这将返回“OK”,但不存在“OK”HTTP 状态代码。它们是唯一的整数。要获取 HTTP 监控脚本的实际 HTTP 状态代码,我们需要将此属性转换为整数。这将返回实际的 HTTP 状态代码。

[int]$res.StatusCode

请注意,现在我们可以获得真正的 HTTP 状态代码,即 200。

PowerShell 是一种功能强大的脚本语言,它的功能比大多数系统管理员意识到的要多得多。即使 PowerShell 本身不支持某个任务,它仍然可以通过本机 .NET 对象来完成。

一旦您开始创建更多这样的代码,您将不可避免地发现此类代码可以被视为构建块。继续学习这样的小代码片段,您将拥有大量可应用于多种情况的脚本技巧。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯