2016-10-08 8 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) 
    )