2016-10-08 2 views
0

Я пытаюсь найти список не признанных устройств, подключенных к беспроводной сети. Я пытаюсь сравнить те, которые основаны на 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-адресами и «связный» должен содержать список всех подключенных устройств. Я могу узнать дублированные, но не те, которые не разрешены или ожидаются.

+2

Покажите нам образец продукции 'nmap' обеспечивает для вас, а также планируемое копию списка и содержание' 'connected' и unauthorized' при условии, что 'nmap'. При необходимости переопределите данные. 'nmap' для меня не является признанной командой. – Magoo

ответ

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) 
    )