在Windows 10上批量检测多个主机的端口状态,尤其是用于网络排错和测试,可以大大提升工作效率。为了实现这一目标,可以编写一个批量 Telnet 端口检测工具,通过一键检测多个目标主机和端口的连通性,自动化完成手动逐一测试的工作。

方案:批量检测端口状态的Telnet工具

我们将使用 PowerShell 来实现一个简单的批量 Telnet 端口检测工具,提供如下功能:

  • 输入多个目标 IP 和端口。
  • 批量检测每个 IP 的每个端口是否可达。
  • 输出检测结果,并保存为文件。

步骤:

1. 准备工作

  • PowerShell 是 Windows 内置的命令行工具,能够轻松编写自动化脚本。
  • 需要启用 Telnet 客户端(如果尚未启用)。
    1. 打开 控制面板 → 程序 → 启用或关闭 Windows 功能
    2. 在弹出的窗口中勾选 Telnet 客户端,然后点击 确定

2. PowerShell 脚本实现

我们编写一个 PowerShell 脚本,能够读取一个目标地址列表,并且尝试通过 Telnet 检查每个端口的状态。

PowerShell 脚本示例:
# Telnet 批量端口检测工具

# 目标 IP 和端口列表
$targets = @(
    @{Host="192.168.1.1"; Ports=@(22, 80, 443)},
    @{Host="192.168.1.2"; Ports=@(80, 8080)},
    @{Host="192.168.1.3"; Ports=@(25, 3306, 8080)}
)

# 输出结果文件
$outputFile = "Port_Check_Results.txt"

# 结果格式化输出
function Test-Port {
    param (
        [string]$host,
        [int]$port
    )
    
    try {
        # 尝试建立 Telnet 连接
        $tcpConnection = Test-NetConnection -ComputerName $host -Port $port
        
        if ($tcpConnection.TcpTestSucceeded) {
            return "$host:$port - OPEN"
        } else {
            return "$host:$port - CLOSED"
        }
    } catch {
        return "$host:$port - ERROR"
    }
}

# 清空旧的结果文件
Clear-Content -Path $outputFile

# 检测每个目标的端口
foreach ($target in $targets) {
    $host = $target.Host
    $ports = $target.Ports
    
    foreach ($port in $ports) {
        $result = Test-Port -host $host -port $port
        Write-Host $result
        Add-Content -Path $outputFile -Value $result
    }
}

Write-Host "Port checking complete! Results saved to $outputFile"

3. 脚本解析

  • $targets:一个包含主机和端口的数组,每个目标包含主机(Host)和端口列表(Ports)。
  • Test-Port:一个函数,用于检测特定主机和端口的可用性,使用 Test-NetConnection 命令来测试连接。
    • Test-NetConnection 是 PowerShell 中用于检测网络连接的命令,能够检查目标主机的端口是否开放。
    • 如果端口开放,输出 “OPEN”,否则输出 “CLOSED”。
  • 输出结果:将检测结果打印到屏幕,并同时保存到一个名为 Port_Check_Results.txt 的文本文件中。

4. 运行脚本

  1. 打开 PowerShell,确保以管理员身份运行(右键选择“以管理员身份运行”)。
  2. 将脚本保存为 CheckPorts.ps1 文件。
  3. 在 PowerShell 中,切换到脚本所在目录并运行脚本:.\CheckPorts.ps1
  4. 脚本会依次检测每个目标主机的每个端口,并将结果输出到控制台,并保存在 Port_Check_Results.txt文件中。

5. 输出结果示例

如果一切正常,脚本会输出类似如下的结果:

192.168.1.1:22 - OPEN
192.168.1.1:80 - OPEN
192.168.1.1:443 - CLOSED
192.168.1.2:80 - OPEN
192.168.1.2:8080 - CLOSED
192.168.1.3:25 - CLOSED
192.168.1.3:3306 - OPEN
192.168.1.3:8080 - CLOSED
Port checking complete! Results saved to Port_Check_Results.txt

并且,Port_Check_Results.txt 文件中会保存相同的内容。

6. 增强功能

你可以根据需求进行扩展:

  • 定时检测:可以将脚本设置为定时任务,定期检查端口状态。
  • 支持更多协议:除了 TCP 端口,还可以添加对 UDP 或其他协议的支持。
  • 错误处理:增强错误处理机制,如网络不通、超时等异常情况。
  • 邮件通知:当端口不可用时,自动发送邮件通知管理员。

总结

这个批量 Telnet 端口检测工具 可以帮助 IT 管理员、网络工程师或开发人员高效地批量检测多个服务器的端口状态。通过简单的 PowerShell 脚本,你可以在 Windows 10 环境中快速实施,并将结果保存下来以供进一步分析。