MAC-Adressen mit Host-Namen im LAN ermitteln
Hallo,
vielleicht hat das schon mal jemand gebraucht und ein Script liegen...
Ich möchte in regelmäßigen Abständen alle LAN-Bereiche unseres Netzwerks scannen (z.B. 172.50.1.1 bis 172.50.10.254) und in einer Textdatei speichern. Klar geht das mit arp, allerdings bekomme ich da ja nur alle Rechner zurück, wo ich bereits mal Kontakt hatte. Außerdem nicht den Hostnamen. Ich möchte eine Liste in dieser Form bekommen:
Den Hostnamen bekomme ich natürlich mittels "ping /a IP-Adresse". Müsste ich nur so in das Script/Batch einbinden...
Vielen Dank im Voraus!
Torsten
vielleicht hat das schon mal jemand gebraucht und ein Script liegen...
Ich möchte in regelmäßigen Abständen alle LAN-Bereiche unseres Netzwerks scannen (z.B. 172.50.1.1 bis 172.50.10.254) und in einer Textdatei speichern. Klar geht das mit arp, allerdings bekomme ich da ja nur alle Rechner zurück, wo ich bereits mal Kontakt hatte. Außerdem nicht den Hostnamen. Ich möchte eine Liste in dieser Form bekommen:
Den Hostnamen bekomme ich natürlich mittels "ping /a IP-Adresse". Müsste ich nur so in das Script/Batch einbinden...
PC-001;2C-60-0C-68-90-18
PC-005;B0-48-7A-80-F8-B1
Vielen Dank im Voraus!
Torsten
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 284846
Url: https://administrator.de/contentid/284846
Ausgedruckt am: 22.11.2024 um 04:11 Uhr
10 Kommentare
Neuester Kommentar
Am einfachsten machst du das mit dem Tool fing was es für alle verfügbaren OS gibt:
http://www.overlooksoft.com/download
Mit dem Output bekommst du zyklisch alle Macs und korrespondierende IPs in einem Segment. Über Router Grenzen hinweg funktioniert das logischerweise nicht, da du die Mac Adressen dann ja nicht mehr "siehst".
In dem Falle könnte man sich dann ganz einfach zyklisch via SNMP (Net-SNMP etc.) die ARP Table des Layer 3 Core Switches oder Routers ziehen. Hat dann aber den Nachteil das du damit dann nicht die Macs erfasst die nur lokal im Segment kommunizieren. Das geht dann nur mit fing.
http://www.overlooksoft.com/download
Mit dem Output bekommst du zyklisch alle Macs und korrespondierende IPs in einem Segment. Über Router Grenzen hinweg funktioniert das logischerweise nicht, da du die Mac Adressen dann ja nicht mehr "siehst".
In dem Falle könnte man sich dann ganz einfach zyklisch via SNMP (Net-SNMP etc.) die ARP Table des Layer 3 Core Switches oder Routers ziehen. Hat dann aber den Nachteil das du damit dann nicht die Macs erfasst die nur lokal im Segment kommunizieren. Das geht dann nur mit fing.
"Schlau" bedeutet hier das sie SNMP können sollten.
Oder nutzt gleich ARP Spoofing um eine bekannte Mac zu kapern und den Traffic mitzuschneiden:
Netzwerk Management Server mit Raspberry Pi
Zudem dürftes du am DHCP auch sehen wenn "Fremde" im Netzwerk sind und eine IP Adresse haben wollen...
Das ist natürlich Unsinn, denn als Fremder sniffert man erst mit dem Wireshark um zu sehen welches IP Netz dort im Segment verwendet wird und gibt sich dann eine statische IP um gar nicht erst im DHCP aufzutauchen und dem Admin dumm aufzufallen Oder nutzt gleich ARP Spoofing um eine bekannte Mac zu kapern und den Traffic mitzuschneiden:
Netzwerk Management Server mit Raspberry Pi
Hallo,
der Angry IP Scanner scannt Dein LAN und ermittelt auch die MAC pro gefundenen Host.
Das Programm (zumindest eine ältere Version) konnte auch als Befehlszeilenprogramm gestartet werden.
Dateiformat festlegen und ...
Es gibt bestimmt noch mehr "IP-Scanner", die genau Deinen Anforderungen erfüllen (z.B.: SoftPerfect Network Scanner ).
vG
LS
der Angry IP Scanner scannt Dein LAN und ermittelt auch die MAC pro gefundenen Host.
Das Programm (zumindest eine ältere Version) konnte auch als Befehlszeilenprogramm gestartet werden.
Dateiformat festlegen und ...
Es gibt bestimmt noch mehr "IP-Scanner", die genau Deinen Anforderungen erfüllen (z.B.: SoftPerfect Network Scanner ).
vG
LS
Hallo Torsten,
wenn es auch ein Batchscript sein darf (und einfach nur um zu beweisen, dass es geht ):
Das Script benötigt bei mir in dieser Konfiguration für 3 IP-Adressen, von denen nur die erste vorhanden ist, 16 Sekunden - nicht besonders schnell, schon klar.
Den IP-Generator in den Zeilen 21 bis 23 musst Du für Deine Zwecke noch etwas ausbauen, da Du ja die letzten zwei Zifferngruppen der IP-Adresse variabel haben möchtest.
Gruß
Friemler
wenn es auch ein Batchscript sein darf (und einfach nur um zu beweisen, dass es geht ):
@echo off & setlocal
:: ----- Config ------
set "IPNet=172.50.1"
set "HostStart=1"
set "HostEnd=3"
set "NumPings=1"
set "WaitMs=100"
set "OutFile=Protokoll.txt"
:: --- Config End ----
:: ----- Init, don't touch! -----
set "Host="
set "MAC="
set "NotFound="
:: ---------- Init End ----------
type NUL > "%OutFile%"
for /l %%i in (%HostStart%, 1, %HostEnd%) do (
call :DoPing "%IPNet%.%%i"
)
exit /b 0
:DoPing
for /f "tokens=1* delims=:" %%a in ('ping /n %NumPings% /w %WaitMs% /a %~1 ^| findstr /n "^"') do (
if "%%a" equ "2" (
for /f "tokens=5" %%c in ("%%b") do (
set "Host=%%c"
)
) else if "%%a" equ "3" (
set "NotFound="
echo "%%b" | find /i "Zeitüberschreitung der Anforderung" > NUL && (
set "NotFound=1"
) || (
echo "%%b" | find /i "Zielhost nicht erreichbar" > NUL && (
set "NotFound=1"
)
)
) else if not defined NotFound (
echo "%%b" | find /i "% Verlust" | find /i /v "100% Verlust" > NUL && (
call :DoARP "%~1" && (
call :WriteData
)
)
)
)
exit /b 0
:DoARP
for /f "skip=3 tokens=2" %%d in ('arp -a %~1') do (
set "MAC=%%d"
)
if "MAC" neq "" (exit /b 0) else (exit /b 1)
:WriteData
>>"%OutFile%" echo %Host%;%MAC%
set "Host="
set "MAC="
exit /b 0
Das Script benötigt bei mir in dieser Konfiguration für 3 IP-Adressen, von denen nur die erste vorhanden ist, 16 Sekunden - nicht besonders schnell, schon klar.
Den IP-Generator in den Zeilen 21 bis 23 musst Du für Deine Zwecke noch etwas ausbauen, da Du ja die letzten zwei Zifferngruppen der IP-Adresse variabel haben möchtest.
Gruß
Friemler