Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

auf Basis eines IP-Ranges Variable setzen

Frage Entwicklung Batch & Shell

Mitglied: jschneider

jschneider (Level 1) - Jetzt verbinden

10.10.2007, aktualisiert 16.10.2007, 3501 Aufrufe, 9 Kommentare

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
Mitglied: bastla
10.10.2007 um 13:20 Uhr
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:
01.
@echo off & setlocal 
02.
set IP=10.11.15.13 
03.
set OU= 
04.
for %%i in (%IP%) do for /f "tokens=1* delims==" %%a in ('findstr /b "%%~ni" "D:\OU.txt"') do set "OU=%%~b" 
05.
 
06.
if defined OU ( 
07.
    echo %OU% 
08.
) else ( 
09.
    echo IP konnte nicht zugeordnet werden. 
10.
)
Zusätzlich benötigt wird die Datei "D:\OU.txt" mit folgendem Inhalt:
01.
10.11.12="ou=Hamburg,dc=meinedomain,dc=com" 
02.
10.11.13="STuttgart,dc=meinedomain,dc=com" 
03.
10.11.17="Muenchen,dc=meinedomain,dc=com"
Grüße
bastla
Bitte warten ..
Mitglied: bastla
10.10.2007 um 13:43 Uhr
... Plan B, falls tatsächlich auch eine Prüfung nur der ersten beiden Stellen der IP erfolgen soll:
01.
@echo off & setlocal 
02.
set IP=10.17.15.13 
03.
 
04.
set OU= 
05.
for %%i in (%IP%) do for /f "tokens=1* delims==" %%a in ('findstr /b "%%~ni" "D:\OU.txt"') do set "OU=%%~b" 
06.
if defined OU goto :Weiter 
07.
 
08.
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" 
09.
if defined OU goto :Weiter 
10.
 
11.
echo IP konnte nicht zugeordnet werden. 
12.
goto :eof 
13.
 
14.
:Weiter 
15.
echo %OU%
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
Bitte warten ..
Mitglied: jschneider
10.10.2007 um 13:56 Uhr
vielen Dank für die freundliche Begrüßung bastla

ich greife deinen Vorschlag mal auf und verändere Ihn mal leicht

Änderung 1:

falls keine Zuordnung möglich ist soll eine "Auffang-OU" genutzt werden, damit die Aufnahme der Computer in die Domain nicht daran scheitert. Huh bin ich darauf stolz *gg*


@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 (
%OU%="ou=Computer-ohne-Zuordnung,dc=meinedomain,dc=com"
)


Anmerkung 1:

Die IP-Adress Bereiche sind leider nicht so, dass es immer Class-C oder Class-C Bereiche sind.
Am liebsten wäre mir sogar, dass geschaut wird, in welchem definierten Bereich (aus D:\OU.txt)
10.11.12.1 - 10.11.12.254 = "ou=Hamburg,dc=meinedomain,dc=com"
10.11.13.1 - 10.11.12.254 = "ou=Stuttgart,dc=meinedomain,dc=com"
10.17.0.1 - 10.17.20.254 = "ou=Muenchen,dc=meinedomain,dc=com"

die IP-Adresse reinpasst. Also wenn ich z.B. mit der IP 10.10.10.17 komme und das script dann schaut. Aber script technisch sowas zu bewerkstelligen wäre sicher nicht so einfach möglich.

Ich teste es aber mit deinem Vorschlag so mal aus.

Viele Grüße, Jan Schneider
Bitte warten ..
Mitglied: jschneider
10.10.2007 um 16:05 Uhr
Hallo nochmal...

hier ist ein Zwischenstand meines Scriptes in dem dein teil sich verewigt hat

01.
cls 
02.
@echo off & setlocal 
03.
For /F "tokens=14" %%a in ('ipconfig^|find "IPv4"') do (set IP=%%a)  
04.
echo %IP% 
05.
 
06.
set OU= 
07.
for %%i in (%IP%) do for /f "tokens=1* delims==" %%a in ('findstr /b "%%~ni" "c:\test\OU.txt"') do set "OU=%%~b"  
08.
if defined OU goto :Weiter 
09.
 
10.
for /f "tokens=1,2 delims=." %%i in ('echo %IP%') do for /f "tokens=1* delims==" %%a in ('findstr /b "%%i.%%j" "c:\test\OU.txt"') do set "OU=%%~b"  
11.
if defined OU goto :Weiter 
12.
 
13.
set OU=ou=nicht-zugeordnete-pcs,dc=meinedomain,dc=com 
14.
 
15.
echo %OU% 
16.
goto :eof 
17.
 
18.
:Weiter 
19.
echo %OU% 
20.
 
21.
if exist %Windir%\flag\nb.txt set SUBOU="ou=20-Notebook" goto NETDOM 
22.
set SUBOU=ou=10-Desktop 
23.
 
24.
:NETDOM 
25.
echo %SUBOU%,%OU% 
26.
 
27.
%SRC%\netdom add %Computername% /Domain:meinedomain /UserD:Admin /PasswordD:password /OU:%SUBOU%,%OU%
jetzt habe ich doch aber glatt noch zwei Fragen

1.
und zwar würde ich gern vor dem ganzen Durchlauf noch die Art des OS abfragen, damit ich innerhalb des Scriptteils
01.
For /F "tokens=14" %%a in ('ipconfig^|find "IPv4"') do (set IP=%%a)  
02.
echo %IP%
den richtigen Suchwert definieren kann. im oben genanten Beispiel suche ich nach "IPv4" (Vista) in Win2k und WinXP reicht es nach "IP-Ad" zu suchen. Das würde ich gerne abfangen durch eine OS-Abfrage

2. Wie bereits in einem anderen Beitrag hier im Forum auch angesprochen habe ich möglicherweise ein Problem mit mehr als einer aktiven Netzwerkkarte.
Die Variable
01.
 %IP% 
wird jedoch mit dem letzten Wert der gefunden wird gefüllt.
Wie kann ich denn meinem Script sagen, dass sobald eine IP-Adresse mit "10." anfängt er entweder weitere ignorieren soll oder aber wenn sie nicht "10." ist einfach weitersuchen soll?

vielen Dank im vorraus für die Mühe
Bitte warten ..
Mitglied: jschneider
10.10.2007 um 16:43 Uhr
ich beantworte mir mal meine erste Frage selbst wenn ich darf

01.
cls 
02.
@echo off & setlocal 
03.
VER | find "XP" > nul 
04.
IF %errorlevel% EQU 0 GOTO XP 
05.
VER | find "2000" > nul 
06.
IF %errorlevel% EQU 0 GOTO 2000 
07.
VER | find "Microsoft Windows [Version 6" > nul 
08.
IF %errorlevel% EQU 0 GOTO Vista 
09.
 
10.
goto unbekannt 
11.
goto IP-Suche 
12.
 
13.
:unbekannt 
14.
echo unbekannt 
15.
goto IP-Suche 
16.
 
17.
 
18.
:2000 
19.
echo 2000 
20.
set IPStr="IP-Ad" 
21.
goto IP-Suche 
22.
 
23.
:XP 
24.
echo XP 
25.
set IPStr="IP-Ad" 
26.
goto IP-Suche 
27.
 
28.
:Vista 
29.
echo Vista 
30.
set IPStr="IPv4" 
31.
goto IP-Suche 
32.
 
33.
 
34.
 
35.
:IP-Suche 
36.
echo %IPStr% 
37.
 
38.
For /F "tokens=14" %%a in ('ipconfig^|find %IPStr%') do (set IP=%%a)  
39.
echo %IP% 
40.
 
41.
set OU= 
42.
for %%i in (%IP%) do for /f "tokens=1* delims==" %%a in ('findstr /b "%%~ni" "c:\test\OU.txt"') do set "OU=%%~b"  
43.
if defined OU goto :Weiter 
44.
 
45.
for /f "tokens=1,2 delims=." %%i in ('echo %IP%') do for /f "tokens=1* delims==" %%a in ('findstr /b "%%i.%%j" "c:\test\OU.txt"') do set "OU=%%~b"  
46.
if defined OU goto :Weiter 
47.
 
48.
set OU=ou=nicht-zugeordnete-pcs,dc=meinedomain,dc=com 
49.
 
50.
echo %OU% 
51.
goto :eof 
52.
 
53.
:Weiter 
54.
echo %OU% 
55.
 
56.
if exist %Windir%\flag\nb.txt set SUBOU="ou=20-Notebook" goto NETDOM 
57.
set SUBOU=ou=10-Desktop 
58.
 
59.
	 
60.
 
61.
 
62.
:NETDOM 
63.
echo %SUBOU%,%OU% 
64.
 
65.
%SRC%\netdom add %Computername% /Domain:meinedomain /UserD:Admin /PasswordD:password /OU:%SUBOU%,%OU% 
66.
 
67.
 
68.
 
69.
 
70.
 
71.
 
72.
 
73.
 
bleibt noch das Thema mehrfache IPs aufgrund mehrfacher NICs
Bitte warten ..
Mitglied: bastla
10.10.2007 um 18:05 Uhr
Hallo jschneider!

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:
01.
... 
02.
... 
03.
set VIP= 
04.
for /f "tokens=14" %%a in ('ipconfig^|find %IPStr%') do call :ProcessIP %%a 
05.
 
06.
set "OU=ou=nicht-zugeordnete-pcs,dc=meinedomain,dc=com" 
07.
for /f "tokens=1,2,* delims=_" %%i in (D:\IP2OU.txt) do set UG=%%i & set OG=%%j & set "St=%%~k" & call :Compare "%%i" 
08.
echo OU: %OU% 
09.
goto :eof 
10.
 
11.
:ProcessIP 
12.
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" 
13.
if "%IP1%" neq "0010" goto :eof 
14.
set "IP=%~1" 
15.
set "VIP=%IP1:~-3%.%IP2:~-3%.%IP3:~-3%.%IP4:~-3%" 
16.
goto :eof 
17.
 
18.
:Compare 
19.
if "%VIP%" lss "%UG%" goto :eof 
20.
if "%VIP%" gtr "%OG%" goto :eof 
21.
set "OU=%St%" 
22.
goto :eof
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:
01.
010.011.012.001_010.011.012.254_"ou=Hamburg,dc=meinedomain,dc=com" 
02.
010.011.013.001_010.011.013.254_"ou=Stuttgart,dc=meinedomain,dc=com" 
03.
010.017.000.001_010.017.020.254_"ou=Muenchen,dc=meinedomain,dc=com"
Grüße
bastla
Bitte warten ..
Mitglied: jschneider
11.10.2007 um 11:18 Uhr
sorry für edit, habe fehler gefunden den ich angefragt habe
Bitte warten ..
Mitglied: jschneider
16.10.2007 um 11:14 Uhr
Hallo bastla, hallo wer sonst noch evtl eine Antwort findet

Ich hänge gerade an einem Syntax-Problem in folgender Zeile

01.
... 
02.
 for /f "tokens=1,2,* delims=_" %%i in (C:\mein test\IP2OU.txt) do set UG=%%i & set 
03.
 OG=%%j & set "St=%%~k" & 
04.
 
irgendwie bin ich zu dumm für den Fall, dass in der Pfadangabe zur IP2OU.txt ein Lerzeichen enthalten ist.

Vielen Dank,

Jan Schneider
Bitte warten ..
Mitglied: bastla
16.10.2007 um 11:38 Uhr
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:
01.
for /f "usebackq tokens=1,2,* delims=_" %%i in ("C:\mein test\IP2OU.txt") do set UG=%%i & set 
02.
 OG=%%j & set "St=%%~k" & ...
Grüße
bastla
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Variable soll Variable setzen
gelöst Frage von mc-doubleyouBatch & Shell6 Kommentare

Hallo zusammen, ich versuche eben bestimmt durch eine Variable eine andere zu definieren, ich hatte gehofft das ginge so ...

LAN, WAN, Wireless
Switch mit eigener IP Range
gelöst Frage von Heinz189LAN, WAN, Wireless8 Kommentare

Hallo zusammen, ich habe ein wenig Schwierigkeiten mit dem Aufbau eines Netzwerks und würde mich freuen, wenn Ihr mir ...

Batch & Shell
Nummer suchen und als Variable setzen
gelöst Frage von Nick.BBatch & Shell7 Kommentare

Ich stehe vor einem Problem und hoffe es kann mir jemand helfen. Ich habe eine Textdatei in der eine ...

Batch & Shell
Variable setzen können während timeout
Frage von DontFlameMeITryMyBestBatch & Shell3 Kommentare

Guten Tag miteinander. Ich habe nun heute mein so ziemlich erstes Programm mit Batch geschrieben. Es soll für mich ...

Neue Wissensbeiträge
MikroTik RouterOS

Mikrotik - Lets Encrypt Zertifikate mit MetaROUTER Instanz auf dem Router erzeugen

Anleitung von colinardo vor 15 StundenMikroTik RouterOS6 Kommentare

Einleitung Folgende Anleitung ist aus der Lage heraus entstanden das ein Kunde auf seinem Mikrotik sein Hotspot Captive Portal ...

Sicherheit

Sicherheitslücke in HP-Druckern - Firmware-Updates stehen bereit

Information von BassFishFox vor 15 StundenSicherheit1 Kommentar

Ein weiterer Grund, dass Drucker keinerlei Verbindung nach "auswaerts" haben sollen. Unter Verwendung spezieller Malware können Angreifer aus der ...

Administrator.de Feedback

Entwicklertagebuch: Die Startseite wurde überarbeitet

Information von admtech vor 18 StundenAdministrator.de Feedback9 Kommentare

Hallo Administrator User, mit dem Release 5.7 haben wir unsere Startseite überarbeitet und die Beiträge und Fragen voneinander getrennt. ...

Vmware

VMware Desktopprodukte sind verwundbar

Information von Penny.Cilin vor 23 StundenVmware

Die VMware-Anwendungen zum Umgang mit virtuellen Maschinen Fusion, Horizon Client und Workstation sowie die Plattform NSX sind verwundbar. Davon ...

Heiß diskutierte Inhalte
Windows Netzwerk
Netzwerk Neustrukturierung
Frage von IT-DreamerWindows Netzwerk16 Kommentare

Hallo verehrte Community und Admins, bei uns im Haus steht eine Neustrukturierung an. Dafür benötige ich von euch ein ...

Windows Server
RDP macht Server schneller???
Frage von JaniDJWindows Server16 Kommentare

Hallo Community, wir betrieben seit geraumer Zeit diverse virtuelle Maschinen und Server mit Windows Server 2012. Leider haben wir ...

Festplatten, SSD, Raid
USB Stick recovery
Frage von petereFestplatten, SSD, Raid15 Kommentare

Hallo, ich habe einen defekten USB-Stick, der nicht mehr lesbar ist. Er wird in WIN als unbekanntes Volume mit ...

Windows 10
Windows 10 dunkler Bildschirm nach Umfallen
Frage von AkcentWindows 1015 Kommentare

Hallo, habe hier einen Windows 10 Rechner der von einem User umgefallen wurde (Beine übers Knie, an den PC ...