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地址并导出列表的功能。通过修改脚本中的参数,可以方便地适应不同的场景和需求。在实际应用中,可以根据需要扩展脚本功能,例如添加摄像头参数配置、设备控制等。
Comments NOTHING