auf Basis eines IP-Ranges Variable setzen
Hallo,
ich tue mich etwas schwer mit folgendem Thema.
Ich möchte am Client die IP-Adresse ermitteln.. ok dann: (z.b. die 10.11.12.13)
entweder nur die ersten 3 digits rausschneiden damit folgendes über bleibt 10.11.12
und dann - jetzt kommts - schauen ob ich für diesen Wert : 10.11.12 einen wert hinterlegt habe.
diese werte könnten quasi so aussehen:
10.11.12 = "ou=Hamburg,dc=meinedomain,dc=com"
10.11.13 = "STuttgart,dc=meinedomain,dc=com"
10.17 = "Muenchen,dc=meinedomain,dc=com"
ich möchte damit erreichen, dass PC's in meine Domäne aufgenommen werden. Und die IP-Adresse soll darüber entscheiden in welcher OU das Computerkonto erzeugt wird.
habt ihr ne Idee ?
Falls ja - vielen Dank
ich tue mich etwas schwer mit folgendem Thema.
Ich möchte am Client die IP-Adresse ermitteln.. ok dann: (z.b. die 10.11.12.13)
entweder nur die ersten 3 digits rausschneiden damit folgendes über bleibt 10.11.12
und dann - jetzt kommts - schauen ob ich für diesen Wert : 10.11.12 einen wert hinterlegt habe.
diese werte könnten quasi so aussehen:
10.11.12 = "ou=Hamburg,dc=meinedomain,dc=com"
10.11.13 = "STuttgart,dc=meinedomain,dc=com"
10.17 = "Muenchen,dc=meinedomain,dc=com"
ich möchte damit erreichen, dass PC's in meine Domäne aufgenommen werden. Und die IP-Adresse soll darüber entscheiden in welcher OU das Computerkonto erzeugt wird.
habt ihr ne Idee ?
Falls ja - vielen Dank
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 70591
Url: https://administrator.de/contentid/70591
Ausgedruckt am: 04.11.2024 um 22:11 Uhr
9 Kommentare
Neuester Kommentar
Hallo jschneider und willkommen im Forum!
Falls die Angabe von "10.17" für München eigentlich "10.11.17" hätte lauten sollen (also ebenfalls die ersten 3 Stellen umfasst) könnte es etwa so gehen:
Zusätzlich benötigt wird die Datei "D:\OU.txt" mit folgendem Inhalt:
Grüße
bastla
Falls die Angabe von "10.17" für München eigentlich "10.11.17" hätte lauten sollen (also ebenfalls die ersten 3 Stellen umfasst) könnte es etwa so gehen:
@echo off & setlocal
set IP=10.11.15.13
set OU=
for %%i in (%IP%) do for /f "tokens=1* delims==" %%a in ('findstr /b "%%~ni" "D:\OU.txt"') do set "OU=%%~b"
if defined OU (
echo %OU%
) else (
echo IP konnte nicht zugeordnet werden.
)
10.11.12="ou=Hamburg,dc=meinedomain,dc=com"
10.11.13="STuttgart,dc=meinedomain,dc=com"
10.11.17="Muenchen,dc=meinedomain,dc=com"
Grüße
bastla
... Plan B, falls tatsächlich auch eine Prüfung nur der ersten beiden Stellen der IP erfolgen soll:
Es wird zunächst versucht, anhand der ersten 3 Stellen eine Zuordnung zu treffen. Gelingt dies nicht, werden nur die ersten beiden Stellen berücksichtigt.
Grüße
bastla
@echo off & setlocal
set IP=10.17.15.13
set OU=
for %%i in (%IP%) do for /f "tokens=1* delims==" %%a in ('findstr /b "%%~ni" "D:\OU.txt"') do set "OU=%%~b"
if defined OU goto :Weiter
for /f "tokens=1,2 delims=." %%i in ('echo %IP%') do for /f "tokens=1* delims==" %%a in ('findstr /b "%%i.%%j" "D:\OU.txt"') do set "OU=%%~b"
if defined OU goto :Weiter
echo IP konnte nicht zugeordnet werden.
goto :eof
:Weiter
echo %OU%
Grüße
bastla
Hallo jschneider!
Der aktuelle Stand in dieser Hinsicht sieht so aus:
Um einen sicheren Vergleich der Gesamt-IP durchführen zu können, muss die Vergleichs-IP (VIP) mit führenden Nullen erstellt werden. Da zu diesem Zweck ohnehin eine Zerlegung in alle 4 Einzelteile erforderlich ist, kann nebenbei auch der erste Teil auf eine Adresse "10" geprüft werden.
Die zugehörige "D:\IP2OU.txt" müsste so aussehen:
Grüße
bastla
bleibt noch das Thema mehrfache IPs aufgrund mehrfacher NICs
Das wäre ein Abfallprodukt meiner Überlegungen zum Testen auf eine IP-Range ...Der aktuelle Stand in dieser Hinsicht sieht so aus:
...
...
set VIP=
for /f "tokens=14" %%a in ('ipconfig^|find %IPStr%') do call :ProcessIP %%a
set "OU=ou=nicht-zugeordnete-pcs,dc=meinedomain,dc=com"
for /f "tokens=1,2,* delims=_" %%i in (D:\IP2OU.txt) do set UG=%%i & set OG=%%j & set "St=%%~k" & call :Compare "%%i"
echo OU: %OU%
goto :eof
:ProcessIP
for /f "tokens=1-4 delims=." %%a in ('echo %~1') do set "IP1=00%%a" & set "IP2=00%%b" & set "IP3=00%%c" & set "IP4=00%%d"
if "%IP1%" neq "0010" goto :eof
set "IP=%~1"
set "VIP=%IP1:~-3%.%IP2:~-3%.%IP3:~-3%.%IP4:~-3%"
goto :eof
:Compare
if "%VIP%" lss "%UG%" goto :eof
if "%VIP%" gtr "%OG%" goto :eof
set "OU=%St%"
goto :eof
Die zugehörige "D:\IP2OU.txt" müsste so aussehen:
010.011.012.001_010.011.012.254_"ou=Hamburg,dc=meinedomain,dc=com"
010.011.013.001_010.011.013.254_"ou=Stuttgart,dc=meinedomain,dc=com"
010.017.000.001_010.017.020.254_"ou=Muenchen,dc=meinedomain,dc=com"
Grüße
bastla
Hallo jschneider!
Immer in Batch: Dateinamen / Pfade mit Leerzeichen in Anführungszeichen einschließen.
Im Zusammenhang mit "for" musst Du hier auch noch "usebackq" verwenden, daher also:
Grüße
bastla
Immer in Batch: Dateinamen / Pfade mit Leerzeichen in Anführungszeichen einschließen.
Im Zusammenhang mit "for" musst Du hier auch noch "usebackq" verwenden, daher also:
for /f "usebackq tokens=1,2,* delims=_" %%i in ("C:\mein test\IP2OU.txt") do set UG=%%i & set
OG=%%j & set "St=%%~k" & ...
Grüße
bastla