philkueth
Goto Top

Probleme beim Batchskript zum Auslesen der IPv4-Adresse aus der IP Config unter Windows 2008

Ich nutze zurzeit auf einem Windows 2003 ein Batchskript, welches die IPv4-Adresse aus der IP Config ausliest, nachdem ich mit rasdial eine VPN Verbindung gestartet habe. Lief wunderbar. Nun habe ich versucht dieses Skript auf einen Windows 2008 Server zu starten und stoße hier auf Probleme.

Hi,

kurz zum Scenario:

Bisher habe ich auf einem Windows 2003 Server, RDP Verbindungen auf Kundenserver durch ein Batchskript realisiert.
Mein Problem ist nun, dass dieses auf nach einer Umstellung auf Windows Server 2008 nicht mehr bzw. nur sporadisch funktioniert. Ich habe einmal den Bereich des Skripts eingeschränkt der Probleme verursacht:


01. rasdial Kunde user password
02. @echo off
03. IPConfig|findstr "Kunde">nul
04. IF Errorlevel 1 goto ErrorVPNHHNotFound
05. ipconfig >%temp%\Ipconf.txt
06. For /f "delims=:" %%i in ('findstr /n "." %temp%\Ipconf.txt^|findstr "Kunde"') do set /a line=%%i+3
07. For /f "delims=: tokens=3" %%i in ('findstr /n "." %temp%\Ipconf.txt^|findstr "%line%:"') do @set IpHH=%%i
08. Set IPHH=%IPHH:~1%
09. route add IPDESRECHNERS MASK 255.255.255.255 %IPHH%
10. echo %username% >c:\programme\user\userKunde.txt
11. cls
12. echo Verbindung hergestellt... Bitte nicht beenden!
13. mstsc "%homepath%\Kunde.rdp" /w:1024 /h:768

Beim Test ist mir aufgefallen, dass in Zeile 9 die Variable %IPHH% keinen bzw. einen falschen Wert besitzt.

Für jede Hilfe wäre ich dankbar.

Gruß
Philipp

Content-Key: 190528

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

Printed on: April 20, 2024 at 03:04 o'clock

Member: bytecounter
bytecounter Aug 31, 2012 at 09:57:38 (UTC)
Goto Top
Hallo,

auch wir, die die Dir helfen sollen, sind für jede Hilfe dankbar. Damit meine ich z. B. die Formatierungshilfen zu nutzen und auch etwas mehr Infos. Das erhöht dann auch gleich die Chance "geholfen zu werden" ;)

Du schreibst, Zeile 9 hat einen falschen Wert. Was für einen? Und was steht vor Zeile 8 in der Variablen?

vg
Mitglied: 60730
60730 Aug 31, 2012 at 10:44:57 (UTC)
Goto Top
moin,

IPConfig|findstr "Kunde">nul
versteh ich nicht....

@bytecounter:
ich vermute mal, er hat ein Problem damit, dass unter W2k3 noch nicht, bei W2k8 jedoch schon im std. ein IPv6 läuft.
#
@ TO:
Ich habe einmal den Bereich des Skripts eingeschränkt der Probleme verursacht:
Tja ich hab da auch ein Problem in einem Script, die betreffende Zeile ist:
if not "%%a"=="erfolg" echo Fehler

Merkst du was?

Gruß
Member: holsthn
holsthn Sep 02, 2012 at 00:23:12 (UTC)
Goto Top
Hallo,

ich habe jetzt auch nochmal an dem gleichen Script weitergeforscht.
Also die Datei, die er durchsucht - also die txt-Datei hat folgenden Inhalt

Windows-IP-Konfiguration


PPP-Adapter Kunde:

   Verbindungsspezifisches DNS-Suffix: 
   IPv4-Adresse  . . . . . . . . . . : 192.168.55.107
   Subnetzmaske  . . . . . . . . . . : 255.255.255.255
   Standardgateway . . . . . . . . . : 

Ethernet-Adapter LAN-Verbindung 3:

   Medienstatus. . . . . . . . . . . : Medium getrennt
   Verbindungsspezifisches DNS-Suffix: intern.local

Ethernet-Adapter LAN-Verbindung 2:

   Verbindungsspezifisches DNS-Suffix: intern.local
   Verbindungslokale IPv6-Adresse  . : fe80::d1d4:baf8:f940:55a1%12
   IPv4-Adresse  . . . . . . . . . . : 192.168.42.36
   Subnetzmaske  . . . . . . . . . . : 255.255.255.0
   Standardgateway . . . . . . . . . : 192.168.42.1

Tunneladapter isatap.intern.local:

   Medienstatus. . . . . . . . . . . : Medium getrennt
   Verbindungsspezifisches DNS-Suffix: intern.local

Jetzt sucht er zuerst nach der richtigen Zeile in der Kunde steht und addiert 3 hinzu
06. For /f "delims=:" %%i in ('findstr /n "." %temp%\Ipconf.txt^|findstr "Kunde"') do set /a line=%%i+3   

als Ergebnis bekomme ich richtigerweise
set /a line=5+3

als nächstes sucht er die IP in Zeile 8 und speichert Sie unter IPHH
For /f "delims=: tokens=3" %%i in ('findstr /n "." "C:\Program Files (x86)\Temp\Ipconf.txt"^|findstr "%line%:"') do @set IpHH=%%i  
Set IPHH="%IPHH:~1%"  

Hier bekomme ich als Ergebnis recht unerwartet
Set IPHH="intern.local"  

Wie kann es dazu kommen - in Zeile 8 steht nichts von intern.local..

Vielen Dank und viele Grüße
Member: pieh-ejdsch
pieh-ejdsch Sep 02, 2012 updated at 10:15:15 (UTC)
Goto Top
moin,

was gibt wohl findstr "8:" für ne Ausgabe? eventuell auch eine 18. und 28. Zeile!

Besser so?:
set "Kunde=Meier"  
set "gefunden="  
set "IPHH="  
for /f "tokens=2*delims=:" %%i in ('IPconfig ^|findstr "%Kunde%: IPv4" ^|findstr /n "^" ^|findstr /b "[12]:" ') do (  
  for /f "tokens=1,2" %%i in ("%%j%%i") do (  
    if defined gefunden set "IPHH=%%i"  
    if %%j equ %Kunde% set "gefunden=%%j"  
) )
if not defined gefunden echo Fehler! %Kunde% nicht gefunden. & exit /b 2
echo Kunde: %Kunde% gefunden.
if not defined IPHH echo Keine IPAdresse gefunden. &exit /b 1
echo IP Adresse: %IPHH%

Gruß Phil
Member: holsthn
holsthn Sep 02, 2012 at 13:07:13 (UTC)
Goto Top
Hi,

vielen Dank! So läuft das. Bin nicht drauf gekommen, dass er in 28 sucht.

Gruß