Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

IP-Adresse finden, mit Registry-Eintrag vergleichen und wenn neu aendern bzw. setzen

Frage Entwicklung Batch & Shell

Mitglied: brubakerbaby

brubakerbaby (Level 1) - Jetzt verbinden

28.10.2008, aktualisiert 18.10.2012, 10655 Aufrufe, 17 Kommentare

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
Mitglied: 60730
28.10.2008 um 15:08 Uhr
Servus,

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

Gruß
Bitte warten ..
Mitglied: brubakerbaby
29.10.2008 um 08:23 Uhr
Hmm, war ne gute Idee, aber leider klappt das so nicht.

Ein "ping $computername" von seiten der Instanz wohin der Tunnel aufgebaut wird (eine Linux Maschine) kann das so nicht auflösen.

Hab auch mit "set" nachgeschaut ob in den Umgebungsvariabeln evtl ein anderer Eintrag existiert der die IP-Addresse zurückgibt, leider nicht. Oder kennst Du einen weitere Variable, welche die IP-Addresse ausspuckt?
Bitte warten ..
Mitglied: 60730
29.10.2008 um 10:45 Uhr
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...
01.
Set IPConfigSet = GetObject("winmgmts://.").ExecQuery("select * from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE") 
02.
    For Each IPConfig In IPConfigSet 
03.
            If Not IsNull(IPConfig.IPAddress) Then 
04.
                    For i=LBound(IPConfig.IPAddress) To UBound(IPConfig.IPAddress) 
05.
                    WScript.Echo "" & IPConfig.IPAddress(i) 
06.
                    Next 
07.
            End If 
08.
    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ß
Bitte warten ..
Mitglied: brubakerbaby
29.10.2008 um 11:11 Uhr
Vorab Danke!

Nee, es ist etwas einfacher.

1. Auf dem Windows System werden Putty Sessions angelegt die in der Registry gespeichert werden.
2. Diese Sessions beinhalten einen Putty-initierten-Tunnel-Aufbau dessen einer Teil die eigene IP-Adresse ist und der andere Teil die lokale und remot Portnummer.
3. Die IP-Adresse des Windows PCs ändert sich aufgrund von dhcp und soll deshlab in der Registry aktualisiert werden.

Somit ist der Rückkanal zum Tunnel-initierenden Rechner korrekt.

regedit info:

[HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\Sessions\sessionname]
...
"PortForwardings"="R1234=192.168.2.23:1234,"


PS aktivePerl steht auf der Windows XP Seite zur Verfügung; aber lieber ne batch
Bitte warten ..
Mitglied: 60730
29.10.2008 um 12:39 Uhr
Servus again,

du brauchst 2 Schnippsel - die gehen davon aus, daß Sie im Ordner
c:\script\reg
liegen.
Bei Bedarf bitte anpassen.
>ip.cmd
01.
type C:\script\reg\ip-tmp.cmd > C:\script\reg\ip.bak 
02.
pause 
03.
cscript /nologo C:\script\reg\ip.vbs >C:\script\reg\ip-tmp.cmd 
04.
fc C:\script\reg\ip-tmp.cmd C:\script\reg\ip.bak 
05.
if %errorlevel%==0  goto end 
06.
:import 
07.
call C:\script\reg\ip-tmp.cmd 
08.
@echo Windows Registry Editor Version 5.00>C:\script\reg\key.reg 
09.
@echo [HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\Sessions\sessionname]>>C:\script\reg\key.reg 
10.
@echo "PortForwardings"="%Portforwardings%">>C:\script\reg\key.reg 
11.
regedit /s C:\script\reg\key.reg 
12.
:end
IP.vbs
01.
Set IPConfigSet = GetObject("winmgmts://.").ExecQuery("select * from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE") 
02.
    For Each IPConfig In IPConfigSet 
03.
            If Not IsNull(IPConfig.IPAddress) Then 
04.
                    For i=LBound(IPConfig.IPAddress) To UBound(IPConfig.IPAddress) 
05.
                    WScript.Echo "Set Portforwardings=" & IPConfig.IPAddress(i) 
06.
                    Next 
07.
            End If 
08.
    Next
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ß
Bitte warten ..
Mitglied: brubakerbaby
29.10.2008 um 13:20 Uhr
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!

Es erfolgt auch eine Fehlermeldung beim Ausführen von "ip.cmd" -> ip-tmp.cmd "..konnte nicht gefunden werden."

Das Kompilierungsproblem in ip.vbs konnte ich durch das entfernen des Umbruchs beheben. Ich vermute die Fensterausgabe ist eine Art Statusmeldung.

bru
Bitte warten ..
Mitglied: 60730
29.10.2008 um 13:37 Uhr
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!

Tausche im vbs die Zeile 5 gegen diese aus:
01.
WScript.Echo "Set Portforwardings=Rport=" & IPConfig.IPAddress(i) & ":port,"
bzw. Sinngemäß

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
01.
 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.

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ß
Bitte warten ..
Mitglied: brubakerbaby
29.10.2008 um 14:01 Uhr
Okay sieht bis auf eine Ausnahme funktionsfähig aus!

"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"..)

Bru


PS Sollte die angelegte "ip.bak" wirklich leer sein?
Bitte warten ..
Mitglied: 60730
29.10.2008 um 14:37 Uhr
Zitat von brubakerbaby:
Okay sieht bis auf eine Ausnahme funktionsfähig aus!

..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"..)
"R9998" finde ich Hier nur 3* - einmal unter "brubakerbaby schreibt am 29.10.2008 um 14:01:18 Uhr:" und zweimal in dieser Antwort.

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?
"nein" die .bak ist eine Kopie der ip-tmp.cmd, nur wenn die leer sein sollte -ist es die .bak auch
Aber wie geschrieben -nur beim ersten Mal.
(Wie sollte sonst ein Abgleich vorher / nachher realisiert werden können)
Bitte warten ..
Mitglied: brubakerbaby
30.10.2008 um 08:13 Uhr
"R9998" finde ich Hier nur 3* - einmal unter
"brubakerbaby schreibt am 29.10.2008 um 14:01:18 Uhr:" und
zweimal in dieser Antwort.

Von daher - ich kann dir leider nicht so richtig folgen. Kannst du
mir mal ein Beispiel geben - vorher - nacher?

Ups, ich meinte natürlich "R1234" statt "9998". Die Ports werden mit den anderen Session Informationen vor und hinter der IP-Addresse abgelegt.

Beispiel:
01.
"PortForwardings"="R1234=192.168.2.23:1234,"
(Man beachte. neben der Syntax "Rport=IP:port", auch das "Komma" am Ende, nicht so wie ich am Anfang ;) )


PS Sollte die angelegte "ip.bak" wirklich leer sein?
"nein" die .bak ist eine Kopie der ip-tmp.cmd, nur wenn die
leer sein sollte -ist es die .bak auch
Aber wie geschrieben -nur beim ersten Mal.
(Wie sollte sonst ein Abgleich vorher / nachher realisiert werden
können)

Hamma wieder was gelernt! Danke für Deine Klarstellung!
Bitte warten ..
Mitglied: brubakerbaby
30.10.2008 um 15:07 Uhr
Gibt es ein Lösung für die nachgefragte unstimmige letzte Sache?
Bitte warten ..
Mitglied: 60730
30.10.2008, aktualisiert 18.10.2012
Zitat von brubakerbaby:
Gibt es ein Lösung für die nachgefragte unstimmige letzte
Sache?

Moin,

(Man beachte. neben der Syntax "Rport=IP:port", auch das "Komma" am Ende, nicht so wie ich am Anfang ;) )
01.
Set IPConfigSet = GetObject("winmgmts://.").ExecQuery("select * from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE") 
02.
    For Each IPConfig In IPConfigSet 
03.
            If Not IsNull(IPConfig.IPAddress) Then 
04.
                    For i=LBound(IPConfig.IPAddress) To UBound(IPConfig.IPAddress) 
05.
                    WScript.Echo "Set Portforwardings=Rport=" & IPConfig.IPAddress(i) & ":port," 
06.
                    Next 
07.
            End If 
08.
    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ß
Bitte warten ..
Mitglied: brubakerbaby
31.10.2008 um 09:22 Uhr
Ja, ich denke ich verstehe. Dort kann ich den bereits vorhandenen Port manuell eintragen. Eine Übernahme aus einer Variablen ist auch möglich?

Beste Grüße
Bru


PS ..unglaublich gute "Betreuung" hier..mille gracie!
Bitte warten ..
Mitglied: 60730
31.10.2008 um 11:03 Uhr
Moin,

Dort kann ich den bereits vorhandenen Port manuell eintragen
- nein - du mußt es sogar
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
Bitte warten ..
Mitglied: brubakerbaby
31.10.2008 um 11:15 Uhr
Zitat von 60730:

Toyota!! oder nichts ist unmöglich - du mußt die
Variable nur vorher definieren.

Ich habe verdammt keine Ahnung stelle ich gerade fest. Eine Schande :/

Ich hab nicht den blassen schimmer wie ich "R1234" und "1234" in zwei Variablen packe in dem vbs script. Um es dann an anderer Stelle wieder zu platzieren

Entschuldigung!


BTW, ich kann das so benutzen. Daher möchte ich mich an dieser Stelle nochmal für die tolle Hilfe bedanken und setze den Thread auf gelöst!
Bitte warten ..
Mitglied: 60730
31.10.2008 um 12:00 Uhr
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.

01.
if exist C:\script\reg\ip-tmp.cmd type C:\script\reg\ip-tmp.cmd > C:\script\reg\ip.bak 
02.
cscript /nologo C:\script\reg\ip.vbs >C:\script\reg\ip-tmp.cmd 
03.
fc C:\script\reg\ip-tmp.cmd C:\script\reg\ip.bak 
04.
if %errorlevel%==0  goto end 
05.
 
06.
:import 
07.
call C:\script\reg\ip-tmp.cmd 
08.
@echo Windows Registry Editor Version 5.00>C:\script\reg\key.reg 
09.
@echo [HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\Sessions\127.0.0.1]>>C:\script\reg\key.reg 
10.
@echo "PortForwardings"="%Portforwardings%">>C:\script\reg\key.reg 
11.
regedit /s C:\script\reg\key.reg 
12.
:end 
13.
 
IP.vbs
01.
Port= InputBox("Port:       ", "    Welcher Port?") 
02.
 
03.
Set IPConfigSet = GetObject("winmgmts://.").ExecQuery("select * from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE") 
04.
    For Each IPConfig In IPConfigSet 
05.
            If Not IsNull(IPConfig.IPAddress) Then 
06.
                    For i=LBound(IPConfig.IPAddress) To UBound(IPConfig.IPAddress) 
07.
                    WScript.Echo "Set Portforwardings=R" & port & "=" & IPConfig.IPAddress(i) & ":" & port & "," 
08.
                    Next 
09.
            End If 
10.
    Next
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
Port = 1234
festlegen - nur wäre eine feste variable eher nicht dein Ziel?
Oder doch ?

Gruß
Bitte warten ..
Mitglied: brubakerbaby
31.10.2008 um 12:53 Uhr
Doch, absolut!

Hab es übernommen und bin sehr zufrieden.

Klasse Seite, klasse Forum...klasse Leute! ;)
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(1)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
LAN, WAN, Wireless
gelöst TP-Link WA501G als Client einrichten - Keine IP Adresse wir bezogen (14)

Frage von bestelitt zum Thema LAN, WAN, Wireless ...

E-Mail
gelöst Falsche SMTP Server IP Adresse (6)

Frage von laster zum Thema E-Mail ...

Batch & Shell
Hostname bzw IP-Adresse in Excel eintragen (12)

Frage von EgonFrenz zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

Outlook & Mail
Outlook 2010 findet ost datei nicht (18)

Frage von Floh21 zum Thema Outlook & Mail ...

Windows Server
Server 2008R2 startet nicht mehr (Bad Patch 0xa) (18)

Frage von Haures zum Thema Windows Server ...