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-ID: 190528

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

Ausgedruckt am: 26.11.2024 um 08:11 Uhr

bytecounter
bytecounter 31.08.2012 um 11:57:38 Uhr
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
60730
60730 31.08.2012 um 12:44:57 Uhr
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ß
holsthn
holsthn 02.09.2012 um 02:23:12 Uhr
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
pieh-ejdsch
pieh-ejdsch 02.09.2012 aktualisiert um 12:15:15 Uhr
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
holsthn
holsthn 02.09.2012 um 15:07:13 Uhr
Goto Top
Hi,

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

Gruß