stupsnose
Goto Top

IP Adresse als Systemvariable speichern

Hallo!

Ich habe genau das gleiche Problem.
Ich habe den gleichen Post schon unter diesem Thread hinzugefügt, aber der ist so alt, den findet keiner mehr. Deshalb das ganze als neuer Beitrag.
Ich möchte gerne die IP-Adresse der VPN-Verbindung auslesen und abspeichern.

Sammel doch mal die drei unterschiedlichen
Ipconfig-Outputs zusammen, dann
trümmern wir das eben hier im Forum
zusammen.

Hier mein Output von ipconfig:

Ethernetadapter VMware Network Adapter VMnet8:

Verbindungsspezifisches DNS-Suffix:
IP-Adresse. . . . . . . . . . . . : 192.168.157.1
Subnetzmaske. . . . . . . . . . . : 255.255.255.0
Standardgateway . . . . . . . . . :

Ethernetadapter VMware Network Adapter VMnet1:

Verbindungsspezifisches DNS-Suffix:
IP-Adresse. . . . . . . . . . . . : 192.168.111.1
Subnetzmaske. . . . . . . . . . . : 255.255.255.0
Standardgateway . . . . . . . . . :

Ethernetadapter LAN-Verbindung:

Verbindungsspezifisches DNS-Suffix: xxxx
IP-Adresse. . . . . . . . . . . . : 10.4.36.13
Subnetzmaske. . . . . . . . . . . : 255.255.255.0
Standardgateway . . . . . . . . . : 10.4.36.254

Ethernetadapter MyTap:

Medienstatus. . . . . . . . . . . : Es besteht keine Verbindung

PPP-Adapter VPN xxxx:

Verbindungsspezifisches DNS-Suffix:
IP-Adresse. . . . . . . . . . . . : 10.81.113.2
Subnetzmaske. . . . . . . . . . . : 255.255.255.255
Standardgateway . . . . . . . . . :

Vielen Dank für die Hilfe

Content-Key: 12886

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

Ausgedruckt am: 29.03.2024 um 11:03 Uhr

Mitglied: Pedant
Pedant 08.07.2005, aktualisiert am 29.03.2023 um 22:41:40 Uhr
Goto Top
Hallo stupsnose,

hab's Dir mal als Batch geschrieben.

@echo off

if "%1"=="" (  
echo.
echo Es muss eine Ziffer als Parameter angebenen werden.
echo Diese Ziffer entspricht der Position der gesuchten
echo IP-Nummer aus ipconfig /all
echo.
echo Beispiel: %0 4
goto ende
)

set nummer=%1
ipconfig /all > %temp%\all.txt

type %temp%\all.txt | find "IP-Adresse" > %temp%\tmp.txt  
type %temp%\tmp.txt | find /n "IP-Adresse" > %temp%\ips.txt  
type %temp%\ips.txt | find "[%nummer%]" > %temp%\ip.txt  

set /p ipnummer= < %temp%\ip.txt
if not "%ipnummer%"=="" set ipnummer=%ipnummer:~47,15%  

if "%ipnummer%"=="" (  
echo.
echo Es wurde keine IP-Nummer an der %1. Stelle gefunden.
echo Eventuell ist der angegebene Parameter nicht korrekt.
echo.
goto cleanup
)

echo.
echo Die gesuchte %nummer%. IP-Nummer lautet: %ipnummer%
echo Sie wurde in der Variablen "ipnummer" gespeichert.  
echo.

:cleanup
del %temp%\all.txt
del %temp%\tmp.txt
del %temp%\ips.txt
del %temp%\ip.txt

:ende

Fragen?

Gruß Frank
Mitglied: Biber
Biber 08.07.2005, aktualisiert am 29.03.2023 um 22:42:34 Uhr
Goto Top
Sorry, hatte schon unter dem altem Thread geantwortet.

::--- snipp SetIP-Oneliner.bat 
(set /a cnt=1) & For /F "tokens=14" %%a in ('ipconfig^|find "IP-Ad"') do (set IP%cnt%=%%a) & (set /a cnt=%cnt%+1)   
::--- snapp SetIP-Oneliner.bat 

speichert die vorhandenen IP-Adressen in %IP1%, %IP2%, ...%IPn% wie gewünscht.

Frank /der Biber aus Bremen
Mitglied: stupsnose
stupsnose 13.07.2005 um 10:44:04 Uhr
Goto Top
Hallo alle!

Danke, das ist doch schon mal was. Meint ihr, es wäre möglich, die Sache so zu speichern, dass ich in einer Systemvariable, die den Namen des Adapters hat, die zugehörige IP-Adresse speichern kann? So dass echo %Lan_Verbindung% x.x.x.x ergibt?

Hilfreich wäre auch, wenn nur die Adapter in die ganze Aktion mit einbezogen würden, die PPP-Adapter sind. Geht das?

Danke!
Mitglied: Biber
Biber 13.07.2005, aktualisiert am 29.03.2023 um 22:48:24 Uhr
Goto Top
Moin, Stupsnose,

geht auf dem oben skizzierten Weg leider nicht immer zuverlässig.
siehe: IP-Adresse auromatisch auslesen und als Systemvariable eintragen (Der gescheiterte Versuch ist da ausführlichst beschrieben *gg)

Grund: die Variablen lassen sich nur sinnvoll zuordnen, wenn AnzahlGefundenerAdapter=AnzahlIPAdressen sind.

Wenn eine IP-Adresse fehlt (dieser Adapter "Ethernetadapter MyTap:" mit " Medienstatus. . . . . . . . . . . : Es besteht keine Verbindung") ...

... dann geht es über den Weg oben nicht.
Also warten wir auf andere Strategen.

Frank /der Biber aus Bremen
Mitglied: stupsnose
stupsnose 13.07.2005 um 11:59:13 Uhr
Goto Top
Danke für eure Hilfe. Ich habe die Lösung jetzt selbst gefunden.

@echo off

rem Suche IP-Adresse einer bestimmten Verbindung.
rem Übergabeparameter ist ein beliebiger _eindeutiger_ Teil des Verbindungsnamens
if "%1"=="" goto ende  

ipconfig > %temp%\all.tmp
rem schreibt die Zeile mit dem gesuchten Wort mit Zeilennummer in tmp.tmp
type %temp%\all.tmp | find /n "%1" > %temp%\tmp.tmp  
rem Hole die Zeile aus der tmp.tmp
set /p zeile= < %temp%\tmp.tmp
rem Extrahiere die pure Zeilennummer aus der Zeile (hier muss noch nachgebessert werden
rem für Rechner, die nur 1 feste Verbindung haben, evtl kann dann die Zeilennummer für den
rem PPP-Adapter auch noch einstellig sein)
set zeile=%zeile:~1,2%
rem Durchsuche ipconfig-Output ab dieser Zeile nach Adresse
more %temp%\all.tmp +%zeile% | find "IP-Adresse" > %temp%\ip.tmp  

rem Setze Adresse aus dem Ergebnis
set /p IP= < %temp%\ip.tmp
rem Extrahiere die pure Adresse aus dem kompletten String
if not "%IP%"=="" set IP=%IP:~44,15%  

:cleanup
del %temp%\all.tmp
del %temp%\tmp.tmp
del %temp%\ip.tmp

:ende

Gruß
stupsnose
Mitglied: Pedant
Pedant 13.07.2005, aktualisiert am 29.03.2023 um 22:46:37 Uhr
Goto Top
Hallo Stupsnose,

da die Zeilennummern vermutlich nicht dreistellig werden, sollte folgende primitive Ergänzung ausreichen:

rem erzeugt tmp.tmp mit 9 Leerzeilen.
echo. > %temp%\tmp.tmp
echo. >> %temp%\tmp.tmp
echo. >> %temp%\tmp.tmp
echo. >> %temp%\tmp.tmp
echo. >> %temp%\tmp.tmp
echo. >> %temp%\tmp.tmp
echo. >> %temp%\tmp.tmp
echo. >> %temp%\tmp.tmp
echo. >> %temp%\tmp.tmp

rem schreibt die Zeile mit dem gesuchten Wort mit Zeilennummer in tmp.tmp
type %temp%\all.tmp | find /n "%1" >> %temp%\tmp.tmp  
rem Hole die Zeile aus der tmp.tmp
...
...

Anmerkung
befehl > datei - erzeugt oder überschreibt die Datei.
befehl >> datei - erzeugt oder ergänzt die Datei.

Gruß Frank
Mitglied: stupsnose
stupsnose 13.07.2005 um 12:42:54 Uhr
Goto Top
Hallo Frank!

Nein, das funktioniert nicht, da die Zeilennummern von ipconfig sind. Aber was auf jeden Fall reicht, ist ipconfig /all. Da ist dann eher das Problem, dass das relativ schnell 3stellig wird...

Gruß
stupsnose
Mitglied: Biber
Biber 13.07.2005 um 12:52:00 Uhr
Goto Top
Moin stupsnose und Frank,

macht euch keinen Stress,
auch bei nur einem Adapter ist die Zeilennummer zweistellig.
Jedenfalls bei meinem "IPConfig /all "-Output.

Ansonsten nette Lösung *lach*

Frank / der Biber aus Bremen
Mitglied: Pedant
Pedant 13.07.2005 um 13:05:00 Uhr
Goto Top
Hallo stupsnose,

das funktioniert nicht, da die Zeilennummern von ipconfig sind.
dann halt so:

echo. > %temp%\all.tmp
echo. >> %temp%\all.tmp
echo. >> %temp%\all.tmp
echo. >> %temp%\all.tmp
echo. >> %temp%\all.tmp
echo. >> %temp%\all.tmp
echo. >> %temp%\all.tmp
echo. >> %temp%\all.tmp
echo. >> %temp%\all.tmp

ipconfig >> %temp%\all.tmp

Eleganter ist natürlich die Fallunterscheidung für ein- bis dreistellig:

set /p zeile= < %temp%\tmp.tmp
if "%zeile:~2,1%"=="]" set /a zeile=%zeile:~1,1%  
if "%zeile:~3,1%"=="]" set /a zeile=%zeile:~1,2%  
if "%zeile:~4,1%"=="]" set /a zeile=%zeile:~1,3%  
(ungetestet)

Gruß Frank
Mitglied: Biber
Biber 13.07.2005 um 13:06:08 Uhr
Goto Top
..und der Vollständigkeit halber, stubsnose,

Dein Batch liefert auch für den toten MyTab-Adapter eine IP...
es funktioniert also trotz der besseren Lesbarkeit auch nur, wenn der abgefragte Adapter auch eine IP hat.

Ist in dem konkret vorliegenden Fall kein Problem... von daher lasst uns diesen Thread in Frieden schließen.

Frank / der Biber aus Bremen
Mitglied: imperial-lord
imperial-lord 15.12.2005 um 19:57:57 Uhr
Goto Top
ich habe kaum ahnung von batch daher würde ich eben nur sagen

ipconfig > C:\ipadressealstext.txt