kim
Goto Top

Batch IP Adresse herausfinden und Oktette zerlegen

Hallo,

ich habe das Problem, dass ich bei einer Softwareverteilung dies nur auf einen bestimmten IP-Adressbereich verteilen kann, aber die Rechnernamen nach gleicher Syntax aufgebaut sind XX-YY-[001-***]

Jetzt sollte die Batch vor starten der Verteilung jeden Rechner auf die IP überprüfen und zwar müssen die ersten 3 Oktette 192.168.123. sein.

Ich hab schon einige Zeit mit Googeln und Testen verbracht, jedoch ohne Erfolg.

Wäre nett, wenn mir jemand einen Tipp geben könnte.

Vielen Dank im Vorraus!

Kim

Content-Key: 111960

Url: https://administrator.de/contentid/111960

Printed on: April 28, 2024 at 15:04 o'clock

Member: godlie
godlie Mar 20, 2009 at 13:03:09 (UTC)
Goto Top
Hier ein Ansatz an der If Schleife und deren GOTOS kannst du dich dann austoben.
grüße

@echo off & setlocal
ipconfig >%temp%\DanisIp.txt

REM --  bzw. "Ethernetadapter LAN-Verbindung: steht  
REM - Die Zeilennummer wird in Blockstart gespeichert
for /f "delims=:" %%i in ('findstr /n "\<LAN-Verbindung\>" %temp%\DanisIp.txt') do set /a Blockstart=%%i  
REM Zeilen überspringen
set /a BlockStart+=3
REM Aus der entsprechenden Zeile die IP-Adresse auslesen bzw. splitten
for /f "tokens=14 delims=: " %%i in ('findstr /n "." %temp%\DanisIp.txt^|findstr "%blockstart%:"') do set "theIp=%%i"  
echo Ermittelte IP ist [%theIP%]

del %temp%\DanisIp.txt

for /f "tokens=1,2,3 delims=." %%i in ('echo %theIp%') do set IPSuff=%%i.%%j.%%k  
echo %IPSuff%

IF "%IPSuff%" == "192.168.172" (  
goto treffer 
) ELSE (
goto nontreffer
)

:treffer
REM Hier der Teil wenn die IP passt
echo foobab

:nontreffer
REM Hier der Teil wo die IP nicht passt
echo fasl
Member: Kim
Kim Mar 20, 2009 at 16:26:11 (UTC)
Goto Top
Hmm, danke für deine schnelle Hilfe.

Das würde funktionieren, wenn ich das an einem Client starten würde, ich muss aber vom Server aus das ganze steuern, also wäre deine Variante leider nicht möglich, geht das ganze denn irgendwie mit ping %rechnername% ?

Gruß
Kim
Member: Biber
Biber Mar 20, 2009 at 17:59:32 (UTC)
Goto Top
Moin Kim,

reicht es nicht, wenn Du die einzelnen Rechnernamen mit
ping %rechnername%|findstr "[192\.168\.123" >nul && echo Rechner %rechnername% ist im IP-Nummernkreis
...durchnudelst?

Grüße
Biber
Member: Kim
Kim Mar 20, 2009 at 18:07:26 (UTC)
Goto Top
Hmm, muss ich am Montag mal testen, hab hier keinen Windows Rechner an dem ichs testen könnte, aber vielen Dank für die schnelle Antwort!

Schönes WE wünsch ich allen!

Gruß
Kim
Member: Kim
Kim Mar 23, 2009 at 09:41:02 (UTC)
Goto Top
Moin Biber,

grad mal getestet, mit der Syntax spuckt er bei mir nie das ECHO aus. Hast den Code mal getestet? Funktioniert er bei dir?

Gruß
Kim

Zitat von @Biber:
Moin Kim,

reicht es nicht, wenn Du die einzelnen Rechnernamen mit
> ping %rechnername%|findstr "[192\.168\.123" >nul
&& echo Rechner %rechnername% ist im IP-Nummernkreis
...durchnudelst?

Grüße
Biber
Member: Biber
Biber Mar 23, 2009 at 10:58:26 (UTC)
Goto Top
Moin Kim,

Ja, bei mir funktioniert es.
Allerdings ist in meinem Beispiel die Variable %rechnername% wirklich nur ein Platzhalter.
  • Testen am CMD-Prompt kannst Du ja, wenn Du gegen Deinen eigenen Rechner %computername% pingst
 ping %computername% -n 1|find "[192.168"  
Der nächste Schritt wäre dann, eine erweiterbare Test-Zeile am CMD-Prompt aufzubauen:
 for %i in (%computername%) @do ping %i -n 1|find "[192.168"  
...und diese (wenn es bis hierhin klappt) zu erweitern auf
 for %i in (%computername% unknown1 unknown2) @do ping %i -n 1|find "[192.168"  
... damit auch die Computer-nicht-erreichbar-Fälle angetestet sind.
Statt der einfachen FOR-Anweisung kannst Du auch aus einer Rechnernamen-Tetdatei lesen mit FOR /F. [For /F %i in (meinerechner.txt) do... ]

Im Batch vor der Laufvariablen ein Prozentzeichen mehr als am CMD-Prompt (%%i statt %i).

Grüße
Biber
Member: Kim
Kim Mar 23, 2009 at 13:34:22 (UTC)
Goto Top
Super, funktioniert :o)

Vielen Dank!!