在Windows 10上批量检测多个主机的端口状态,尤其是用于网络排错和测试,可以大大提升工作效率。为了实现这一目标,可以编写一个批量 Telnet 端口检测工具,通过一键检测多个目标主机和端口的连通性,自动化完成手动逐一测试的工作。
方案:批量检测端口状态的Telnet工具
我们将使用 PowerShell 来实现一个简单的批量 Telnet 端口检测工具,提供如下功能:
- 输入多个目标 IP 和端口。
- 批量检测每个 IP 的每个端口是否可达。
- 输出检测结果,并保存为文件。
步骤:
1. 准备工作
- PowerShell 是 Windows 内置的命令行工具,能够轻松编写自动化脚本。
- 需要启用 Telnet 客户端(如果尚未启用)。
- 打开 控制面板 → 程序 → 启用或关闭 Windows 功能。
- 在弹出的窗口中勾选 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. 运行脚本
- 打开 PowerShell,确保以管理员身份运行(右键选择“以管理员身份运行”)。
- 将脚本保存为
CheckPorts.ps1
文件。 - 在 PowerShell 中,切换到脚本所在目录并运行脚本:
.\CheckPorts.ps1
- 脚本会依次检测每个目标主机的每个端口,并将结果输出到控制台,并保存在
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 环境中快速实施,并将结果保存下来以供进一步分析。
发表回复