我正在尝试提供连接到无线网络的未识别设备列表。我试图比较基于MAC地址的那些(假设所有设备都是“可见的”,并且没有人有隐藏或弹跳的MAC地址),并且我在阵列中设置了允许的那些设备。
nmap -sn 192.168.1.0/24 ^| find "MAC Address"
这为我提供了连接到默认网关的所有MAC地址的列表。将上述输出与“可接受”的输出进行比较并显示非输出的最简单方法是什么。
这是我到达了多远:
@echo off
set all_apps="xx:xx:xx:xx:xx:xx" "yy:yy:yy:yy:yy:yy" "zz:zz:zz:zz:zz:zz"
set "connected="
set "unauthorized="
for /f "tokens=3" %%a in ('nmap -sn 192.168.1.0/24 ^| find "MAC Address"') do call set connected="%%a" %%connected%%
echo duplicates:
for %%a in (%all_apps%) do (
for %%b in (%connected%) do (
if "%%~a"=="%%~b" echo %%~b
)
)
pause
REM echo %connected% "xx:xx:xx:xx:xx:xx" "aa:aa:aa:aa:aa:aa"
此处“all_apps”是所有可接受的MAC地址的数组,“connected”应包含所有连接设备的列表。我能够找到重复的,但不能找到未经授权或预期的那些。
答案 0 :(得分:0)
您只需要更多逻辑来查看地址何时不在列表中。这是未经测试的,但它可能看起来像:
SETLOCAL ENABLEDELAYEDEXPANSION
echo duplicates:
for %%a in (%all_apps%) do (
SET "FOUND=false"
for %%b in (%connected%) do (
if "%%~a"=="%%~b" echo %%~b
SET "FOUND=true"
)
IF !FOUND! NEQ "true" (ECHO %%~b NOT RECOGNIZED)
)