IP-Adresse finden, mit Registry-Eintrag vergleichen und wenn neu aendern bzw. setzen
Der Registry-Eintrag ist eine gespeicherte Putty-Session (Ssh Tunnel Option) die immer die aktuelle IP-Adresse des Rechners enthalten soll. Die lokale Ip-Adresse (Windows XP Pro) wird allerdings regelmäßig per Dhcp neu zugewiesen (kurze leasetime).
Hallo,
ich möchte die IP-Adresse meines Rechners welche in gespeicherten Registry-Putty-Sessions (SSH Tunnel Option) steht, aktualisieren wenn diese per Dhcp wiedermal geaendert wurde.
Wie bekomme ich das mit einfachen Boardmitteln (batch, regedit) hin? Hier der Reg-Key:
[HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\Sessions\sessionname]
...
"PortForwardings"="R1234=192.168.2.23:1234,"
Beste Grüße
Bru
Hallo,
ich möchte die IP-Adresse meines Rechners welche in gespeicherten Registry-Putty-Sessions (SSH Tunnel Option) steht, aktualisieren wenn diese per Dhcp wiedermal geaendert wurde.
Wie bekomme ich das mit einfachen Boardmitteln (batch, regedit) hin? Hier der Reg-Key:
[HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\Sessions\sessionname]
...
"PortForwardings"="R1234=192.168.2.23:1234,"
Beste Grüße
Bru
Please also mark the comments that contributed to the solution of the article
Content-ID: 100445
Url: https://administrator.de/forum/ip-adresse-finden-mit-registry-eintrag-vergleichen-und-wenn-neu-aendern-bzw-setzen-100445.html
Printed on: April 26, 2025 at 01:04 o'clock
17 Comments
Latest comment

Servus,
trag dort doch einfach (einmalig) den Namen ein, der dir mit:
Gruß
trag dort doch einfach (einmalig) den Namen ein, der dir mit:
echo %computername%
"ausgeworfen" wird.Gruß

Servus,
mit diesem vbs schnippsel kannst du deine eigene Ip auflösen.
Nur läuft der Schnippsel natürlich auch wieder nicht unter Tux...
von daher - bevor wir diesen Ansatz weiterverfolgen...
Kannst du uns noch mal schnell erklären, wie genau du dir eine Lösung vorstellst?
Das Script soll auf Windows laufen und die eigene IP im fremdsystem eintragen?
Wenn ja- wie kriegst du die Verbindung zwischen den Systemen hin, wenn der Tunnel "weg" ist - weil du eine neue IP bekommen hast?
Gruß
mit diesem vbs schnippsel kannst du deine eigene Ip auflösen.
Nur läuft der Schnippsel natürlich auch wieder nicht unter Tux...
von daher - bevor wir diesen Ansatz weiterverfolgen...
Set IPConfigSet = GetObject("winmgmts://.").ExecQuery("select * from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE")
For Each IPConfig In IPConfigSet
If Not IsNull(IPConfig.IPAddress) Then
For i=LBound(IPConfig.IPAddress) To UBound(IPConfig.IPAddress)
WScript.Echo "" & IPConfig.IPAddress(i)
Next
End If
Next
Kannst du uns noch mal schnell erklären, wie genau du dir eine Lösung vorstellst?
Das Script soll auf Windows laufen und die eigene IP im fremdsystem eintragen?
Wenn ja- wie kriegst du die Verbindung zwischen den Systemen hin, wenn der Tunnel "weg" ist - weil du eine neue IP bekommen hast?
Gruß

Servus again,
du brauchst 2 Schnippsel - die gehen davon aus, daß Sie im Ordner
Bei Bedarf bitte anpassen.
Ich hab grade nicht wirklich Zeit, um die (in meinen Augen eh schon viel zu große Abfrage) noch um Rems zu erweitern - denke aber - Sie ist (wenn schon nicht elegant) wenigstens nachvollziehbar.
Gruß
du brauchst 2 Schnippsel - die gehen davon aus, daß Sie im Ordner
c:\script\reg
liegen.Bei Bedarf bitte anpassen.
ip.cmd
type C:\script\reg\ip-tmp.cmd > C:\script\reg\ip.bak
pause
cscript /nologo C:\script\reg\ip.vbs >C:\script\reg\ip-tmp.cmd
fc C:\script\reg\ip-tmp.cmd C:\script\reg\ip.bak
if %errorlevel%==0 goto end
:import
call C:\script\reg\ip-tmp.cmd
@echo Windows Registry Editor Version 5.00>C:\script\reg\key.reg
@echo [HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\Sessions\sessionname]>>C:\script\reg\key.reg
@echo "PortForwardings"="%Portforwardings%">>C:\script\reg\key.reg
regedit /s C:\script\reg\key.reg
:end
IP.vbs
Set IPConfigSet = GetObject("winmgmts://.").ExecQuery("select * from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE")
For Each IPConfig In IPConfigSet
If Not IsNull(IPConfig.IPAddress) Then
For i=LBound(IPConfig.IPAddress) To UBound(IPConfig.IPAddress)
WScript.Echo "Set Portforwardings=" & IPConfig.IPAddress(i)
Next
End If
Next
Gruß

Zitat von @brubakerbaby:
Hi,
das Registry Ergebnis nach dem ausführen von "ip.cmd"
lautet:
"PortForwardings"="10.224.116.62" statt
"PortForwardings"="Rport=192.168.2.23:port,"
Es wurde also, wenn auch noch nicht ganz richtig, die richtige IP
gesetzt!
Hi,
das Registry Ergebnis nach dem ausführen von "ip.cmd"
lautet:
"PortForwardings"="10.224.116.62" statt
"PortForwardings"="Rport=192.168.2.23:port,"
Es wurde also, wenn auch noch nicht ganz richtig, die richtige IP
gesetzt!
Tausche im vbs die Zeile 5 gegen diese aus:
WScript.Echo "Set Portforwardings=Rport=" & IPConfig.IPAddress(i) & ":port,"
Es erfolgt auch eine Fehlermeldung beim Ausführen von
"ip.cmd" -> ip-tmp.cmd "..konnte nicht gefunden
werden."
Das sollte nur beim allerersten Lauf der Fall sein.
Wenn es dich stört, dann ist das deine neue Zeile 1 in ip.cmd
if exist C:\script\reg\ip-tmp.cmd type C:\script\reg\ip-tmp.cmd > C:\script\reg\ip.bak
Edit
Die beiden Dateien "C:\script\reg\ip.bak" und "C:\script\reg\ip-tmp.cmd" nehme ich als Abgleich - ob seit dem letzten Lauf die Ip geändert wurde.
Da die "C:\script\reg\ip-tmp.cmd" beim ersten Lauf noch nicht vorhanden ist - kommt diese Meldung das erste Mal.
Das Kompilierungsproblem in ip.vbs konnte ich durch das entfernen des
Umbruchs beheben. Ich vermute die Fensterausgabe ist eine Art
Statusmeldung.
Umbruchs beheben. Ich vermute die Fensterausgabe ist eine Art
Statusmeldung.
Wenn du das Vbs alleine laufen läßt - kommt das Ergebnis als Fensterausgabe.
Läßt du es per cmd laufen - erzeugt es durch ">" die C:\script\reg\ip-tmp.cmd
bru
Gruß
..und die wäre?
"Rport" und "port" waren meinerseits als
Platzhalter ($) gedacht. Mea culpa! ;)
Die in der Registry vorhandenen Ports in den gespeicherten Sessions
sollen erhalten bleiben (siehe snip meines erstes posting;
"R9998"..)
Von daher - ich kann dir leider nicht so richtig folgen. Kannst du mir mal ein Beispiel geben - vorher - nacher?
Bru
PS Sollte die angelegte "ip.bak" wirklich leer sein?
Aber wie geschrieben -nur beim ersten Mal.
(Wie sollte sonst ein Abgleich vorher / nachher realisiert werden können)

Moin,
(Man beachte. neben der Syntax "Rport=IP:port", auch das "Komma" am Ende, nicht so wie ich am Anfang ;) )
Set IPConfigSet = GetObject("winmgmts://.").ExecQuery("select * from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE")
For Each IPConfig In IPConfigSet
If Not IsNull(IPConfig.IPAddress) Then
For i=LBound(IPConfig.IPAddress) To UBound(IPConfig.IPAddress)
WScript.Echo "Set Portforwardings=Rport=" & IPConfig.IPAddress(i) & ":port,"
Next
End If
Next
schau dir mal ganz haargenau die Zeile 5 des.vbs an:
WScript.Echo "Set Portforwardings=Rport=" & IPConfig.IPAddress(i) & ":port,"
Damit meine ich ":port,"
Gruß

Moin,
- nein - du mußt es sogar 
Gruß
Dort kann ich den bereits vorhandenen Port manuell eintragen
Eine Übernahme aus einer Variablen ist auch möglich?
Toyota!! oder nichts ist unmöglich - du mußt die Variable nur vorher definieren.Gruß
PS ..unglaublich gute "Betreuung" hier..mille gracie!
sei il benvenuto
Servus again,
zuerst - du brauchst nicht zwei Variablen - sondern nur eine (names Port) - denn R1234 sollte auch identisch mit:1234 sein.
Der vollständigkeit halber mal alles - am Stück.
IP.vbs
Wenn du dir die erste Zeile im .vbs ansiehst - erkennst du "wie" die Variable Port gefüllt wird. Die könntest du aber auch "fest" via
Oder doch ?
Gruß
zuerst - du brauchst nicht zwei Variablen - sondern nur eine (names Port) - denn R1234 sollte auch identisch mit:1234 sein.
Der vollständigkeit halber mal alles - am Stück.
if exist C:\script\reg\ip-tmp.cmd type C:\script\reg\ip-tmp.cmd > C:\script\reg\ip.bak
cscript /nologo C:\script\reg\ip.vbs >C:\script\reg\ip-tmp.cmd
fc C:\script\reg\ip-tmp.cmd C:\script\reg\ip.bak
if %errorlevel%==0 goto end
:import
call C:\script\reg\ip-tmp.cmd
@echo Windows Registry Editor Version 5.00>C:\script\reg\key.reg
@echo [HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\Sessions\127.0.0.1]>>C:\script\reg\key.reg
@echo "PortForwardings"="%Portforwardings%">>C:\script\reg\key.reg
regedit /s C:\script\reg\key.reg
:end
IP.vbs
Port= InputBox("Port: ", " Welcher Port?")
Set IPConfigSet = GetObject("winmgmts://.").ExecQuery("select * from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE")
For Each IPConfig In IPConfigSet
If Not IsNull(IPConfig.IPAddress) Then
For i=LBound(IPConfig.IPAddress) To UBound(IPConfig.IPAddress)
WScript.Echo "Set Portforwardings=R" & port & "=" & IPConfig.IPAddress(i) & ":" & port & ","
Next
End If
Next
Port = 1234
festlegen - nur wäre eine feste variable eher nicht dein Ziel?Oder doch ?
Gruß