PowerShell 语言 批量导出网络摄像头 IP 列表 通过 ONVIF 协议扫描

PowerShell阿木 发布于 1 天前 1 次阅读


PowerShell脚本:批量导出网络摄像头IP列表(基于ONVIF协议扫描)

随着物联网技术的不断发展,网络摄像头在家庭、企业等场景中的应用越来越广泛。为了方便管理和维护,我们常常需要获取网络摄像头设备的IP地址列表。本文将介绍如何使用PowerShell脚本,结合ONVIF协议,实现批量扫描网络摄像头IP地址并导出列表的功能。

ONVIF协议简介

ONVIF(Open Network Video Interface Forum)是一个开放的网络视频接口论坛,旨在为网络视频设备提供统一的接口。ONVIF协议支持网络摄像头的发现、配置、控制等功能,使得不同厂商的网络摄像头设备可以相互兼容。

PowerShell脚本实现

以下是一个基于PowerShell的脚本,用于扫描指定IP范围内的网络摄像头,并导出IP地址列表。

powershell
定义扫描的IP范围
$StartIp = "192.168.1.1"
$EndIp = "192.168.1.255"

定义摄像头厂商列表
$cameraManufacturers = @("Hikvision", "Dahua", "Axis", "Sony")

定义摄像头模型列表
$cameraModels = @("IPC-HDW1231E", "IPC-HFW1234S", "P-3242-LV", "IPC-SN3211P")

定义ONVIF发现服务URL
$discoveryUrl = "http://{0}:{1}/onvif-discovery"

定义导出文件路径
$exportPath = "C:CameraIPList.txt"

初始化IP地址列表
$cameraIpList = @()

扫描指定IP范围内的摄像头
for ($i = [System.Net.IPAddress]::Parse($StartIp).Address; $i -le [System.Net.IPAddress]::Parse($EndIp).Address; $i++) {
$ipAddress = [System.Net.IPAddress]::FromByteArray($i).ToString()

尝试连接到每个IP地址
try {
$uri = $discoveryUrl -f $ipAddress, 80
$response = Invoke-WebRequest -Uri $uri -TimeoutSec 5

检查响应内容,判断是否为ONVIF设备
if ($response.Content -match "ONVIF") {
获取摄像头厂商和型号
$manufacturer = $response.Content -match "Manufacturer":"(.?)""
$model = $response.Content -match "Model":"(.?)""

判断摄像头厂商和型号是否在列表中
if ($cameraManufacturers -contains $manufacturer -and $cameraModels -contains $model) {
将IP地址添加到列表
$cameraIpList += $ipAddress
}
}
} catch {
忽略无法连接的IP地址
}
}

导出IP地址列表到文件
$cameraIpList | Out-File -FilePath $exportPath

输出导出结果
Write-Host "摄像头IP地址列表已导出到:$exportPath"

脚本说明

1. 定义扫描的IP范围:根据实际需求,修改`$StartIp`和`$EndIp`变量,设置要扫描的IP地址范围。

2. 定义摄像头厂商和型号列表:根据实际需求,修改`$cameraManufacturers`和`$cameraModels`变量,设置要扫描的摄像头厂商和型号。

3. 定义ONVIF发现服务URL:根据实际需求,修改`$discoveryUrl`变量,设置ONVIF发现服务的URL。

4. 定义导出文件路径:修改`$exportPath`变量,设置导出IP地址列表的文件路径。

5. 扫描指定IP范围内的摄像头:脚本会遍历指定IP范围内的每个地址,尝试连接到ONVIF发现服务,并检查响应内容,判断是否为ONVIF设备。

6. 获取摄像头厂商和型号:如果设备是ONVIF设备,脚本会从响应内容中提取摄像头厂商和型号。

7. 判断摄像头厂商和型号:脚本会判断摄像头厂商和型号是否在定义的列表中。

8. 将IP地址添加到列表:如果摄像头厂商和型号在列表中,脚本会将IP地址添加到`$cameraIpList`数组中。

9. 导出IP地址列表到文件:使用`Out-File`命令将IP地址列表导出到指定的文件路径。

10. 输出导出结果:脚本会输出导出结果,提示用户IP地址列表已导出到指定文件。

总结

本文介绍了如何使用PowerShell脚本,结合ONVIF协议,实现批量扫描网络摄像头IP地址并导出列表的功能。通过修改脚本中的参数,可以方便地适应不同的场景和需求。在实际应用中,可以根据需要扩展脚本功能,例如添加摄像头参数配置、设备控制等。