Batch - IP-Adresse auslesen
Guten Abend zusammen,
habe mal wieder ein kleines *gg* Problem.
Folgende Situation: Einige Rechner haben mehrere IP-Adressen. Zum Teil dadurch, dass es zur LAN-Karte noch eine WLAN-Karte gibt => beide sind online! Desweitern noch 1 bzw. 2 virtuelle von einigen Geräten.
Nun haben wir in einem bestimmtes Script, dass nur ein bestimmter IP-Bereich dieses Script ausführen darf.
Nun haben wir weiter festgestellt, dass immer die letzte aufgelistete IP genommen wird. Diese ist meistens aber eine Adresse von einem virtuellen Netzwerkadapter und somit wird das Script gestoppt.
Hier ein kl. Beispiel:
ES geht immer um die IP-Adresse der "LAN-Verbindung" bzw. um die "WLAN-Verbindung". Diese beiden Verbindungen heißen immer gleich. Also wenn LAN nicht verbunden ist, soll er die WLAN IP-Adresse auslesen.
Ich brauch legendlich eine der beiden IP-Adressen. Zuerst die von LAN ansonsten die von WLAN! Der Rest soll nicht beachtet werden.
Mit meinem Batchkenntnissen bzw. Fähigkeiten komm ich leider nicht weiter...
Grüße
Dani
habe mal wieder ein kleines *gg* Problem.
Folgende Situation: Einige Rechner haben mehrere IP-Adressen. Zum Teil dadurch, dass es zur LAN-Karte noch eine WLAN-Karte gibt => beide sind online! Desweitern noch 1 bzw. 2 virtuelle von einigen Geräten.
Nun haben wir in einem bestimmtes Script, dass nur ein bestimmter IP-Bereich dieses Script ausführen darf.
Nun haben wir weiter festgestellt, dass immer die letzte aufgelistete IP genommen wird. Diese ist meistens aber eine Adresse von einem virtuellen Netzwerkadapter und somit wird das Script gestoppt.
Hier ein kl. Beispiel:
Ethernetadapter WLAN-Verbindung:
Verbindungsspezifisches DNS-Suffix: xxxxx.local
IP-Adresse. . . . . . . . . . . . : 192.168.0.11
Subnetzmaske. . . . . . . . . . . : 255.255.255.0
Standardgateway . . . . . . . . . : 192.168.0.1
Ethernetadapter LAN-Verbindung:
Verbindungsspezifisches DNS-Suffix:xxxxx.local
IP-Adresse. . . . . . . . . . . . : 192.168.0.10
Subnetzmaske. . . . . . . . . . . : 255.255.255.0
Standardgateway . . . . . . . . . : 192.168.0.1
Ethernetadapter TEST-Verbindung:
Verbindungsspezifisches DNS-Suffix:
IP-Adresse (Autokonfig.). . . . . : 0.1.0.5
Subnetzmaske. . . . . . . . . . . : 255.255.255.255
Standardgateway . . . . . . . . . :
Ich brauch legendlich eine der beiden IP-Adressen. Zuerst die von LAN ansonsten die von WLAN! Der Rest soll nicht beachtet werden.
Mit meinem Batchkenntnissen bzw. Fähigkeiten komm ich leider nicht weiter...
Grüße
Dani
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 53890
Url: https://administrator.de/contentid/53890
Ausgedruckt am: 26.11.2024 um 21:11 Uhr
3 Kommentare
Neuester Kommentar
Moin Dani,
ich würde (wahrrscheinlich) ungefähr diese Strategie wählen, wenn nur diese IpConfig/all-Ausgabe zur Verfügung steht.
[wie immer ungetestete Skizze]
Gruss
Biber
P.S. Nachtrag:
"... wenn nur diese IpConfig/all-Ausgabe zur Verfügung steht..." ....
...sollte heißen: ich würde es lieber mit etwas ermitteln, was gezielt die IP bezogen auf eine konkrete Verbindung abfragen kann (z.B. WMI).
Dieses "Finde den Beginn des Blocks, dann steht zwei Zeilen tiefer die IP-Adresse..." *hmmmmmmm*....ist nicht wirklich zeitlos elegant.
ich würde (wahrrscheinlich) ungefähr diese Strategie wählen, wenn nur diese IpConfig/all-Ausgabe zur Verfügung steht.
::-------- snipp GetDanisIP.bat ------
@echo off & setlocal
IpConfig /all >%temp%\DanisIp.txt
REM -Jeweils die Zeile ermitteln, in der "Ethernetadapter WLAN-Verbindung:"
REM -- bzw. "Ethernetadapter LAN-Verbindung: steht
for /f "delims=:" %%i in ('findstr /n "\<LAN" %temp%\DanisIp.txt') do Set /a Blockstart=%%i
If not defined BlockStart for /f "delims=:" %%i in ('findstr /n "WLAN" %temp%\DanisIp.txt') do set /a Blockstart=%%i
Set /a BlockStart+=2
for /f "delims=: tokens=3" %%i in ('findstr /n "." %temp%\DanisIp.txt^|findstr "%blockstart%:"') do set "theIp=%%i"
echo Ermittelte IP ist [%theIP%]
pause
del %temp%\DanisIp.txt
::-------- snapp GetDanisIP.bat ------
Gruss
Biber
P.S. Nachtrag:
"... wenn nur diese IpConfig/all-Ausgabe zur Verfügung steht..." ....
...sollte heißen: ich würde es lieber mit etwas ermitteln, was gezielt die IP bezogen auf eine konkrete Verbindung abfragen kann (z.B. WMI).
Dieses "Finde den Beginn des Blocks, dann steht zwei Zeilen tiefer die IP-Adresse..." *hmmmmmmm*....ist nicht wirklich zeitlos elegant.
Danke für die Rückmeldung, Dani,
ich hatte mich natürlich an Deiner geposteten Ausgabe orientiert.
Deshalb kam ich auf das "zwei Zeilen später" statt "drei Zeilen später".
Egal, hast es ja verstanden, was ich meinte...
Bei dem anderen Fehler kann ich erstmal aber kein Problem feststellen:
Bei der oben geposteten Vorgabe...
kommt schon das erhoffte Ergebnis.
Aber was soll's, viele Wege führen nach Redmond.... Hauptsache, mindestens eine Lösung klappt.
Gruss
Biber
ich hatte mich natürlich an Deiner geposteten Ausgabe orientiert.
Deshalb kam ich auf das "zwei Zeilen später" statt "drei Zeilen später".
Egal, hast es ja verstanden, was ich meinte...
Bei dem anderen Fehler kann ich erstmal aber kein Problem feststellen:
Bei der oben geposteten Vorgabe...
>findstr /n "." f:\temp\DanisIp.txt
1:Ethernetadapter WLAN-Verbindung:
2: Verbindungsspezifisches DNS-Suffix: xxxxx.local
3: IP-Adresse. . . . . . . . . . . . : 192.168.0.11
4: Subnetzmaske. . . . . . . . . . . : 255.255.255.0
5: Standardgateway . . . . . . . . . : 192.168.0.1
7:Ethernetadapter LAN-Verbindung:
8: Verbindungsspezifisches DNS-Suffix:xxxxx.local
9: IP-Adresse. . . . . . . . . . . . : 192.168.0.10
10: Subnetzmaske. . . . . . . . . . . : 255.255.255.0
11: Standardgateway . . . . . . . . . : 192.168.0.1
13:Ethernetadapter TEST-Verbindung:
14: Verbindungsspezifisches DNS-Suffix:
15: IP-Adresse (Autokonfig.). . . . . : 0.1.0.5
16: Subnetzmaske. . . . . . . . . . . : 255.255.255.255
17: Standardgateway . . . . . . . . . :
(=21:02:26 D:\temp=)
>for /f "delims=: tokens=3" %i in ('findstr /n "." f:\temp\DanisIp.txt^|findstr "3:"') do @echo %i
192.168.0.11
Aber was soll's, viele Wege führen nach Redmond.... Hauptsache, mindestens eine Lösung klappt.
Gruss
Biber