Tool IP suchen und automatisch einfügen

Drullo321

Captain
Registriert
Juni 2005
Beiträge
3.662
Hallo, ich suche ein Tool (für Windows), bzw versch. Tools welches folgende Sache macht:

externe IP auslesen (habe Internet<->Router<->Server) und diese in eine vorgebene Datenbank an eine bestimmte Stelle schreiben



Angeblich soll das sehr einfach sein. Leider fehlt mir die Begabung zum Programmieren. Über Google habe ich nichts gefunden (vermutlich falsche Suchbegriffe) oder wenn ich was gefunden habe, dann ist es nur von Personen, die selbst sowas suchten und abschließend gesagt haben sie hätten es selbst gemacht, aber leider nirgendwo das Teil angeboten...

Bitte helft mir

Edit: Angeblich geht das über ne Batch, aber ich blick da net durch ;)
 
Zuletzt bearbeitet:
Internet <-> Router <-> Server ?

Was soll das jetzt genau heißen?
Du bist per Router im Internet und irgendwo steht ein Server.
Du willst deine externe IP und die des Servers wissen?

schaue dir mal die Befehle:
ping und ipconfig an, ob dir damit geholfen ist
in eingabeaufforderung
ping (Servername) (müsste dann den Servernamen in IP umwandeln)
ipconfig /all könnte je nachdem wie das oben gemeint war deine externe IP ausgeben.

Ansonsten schaue dir mal tracert an, also
tracert (Servername) (zeigt die Schritte von deinem PC zum Server an)

mit > (Datei) kannst du dir das Ergebnis jeweils in einer datei ausgeben lassen
Bsp.:
ping www.computerbase.de -n 1 > ip.txt
(-n 1 steht für eine Anfrage, da ping sonst 4 x pingt)
Batch steht für Bat dateien, also z. B. kannst du eine Textdatei erstellen
"
ping www.computerbase.de -n 1 > ip.txt
tracert www.computerbase.de > weg.txt
"

speichern und in Dateiname.bat (Dateiname darf glaube ich nur 7 Buchstaben lang sein)
und dann ausführen, dann würde er in dem ordner wo die Datei ist ip.txt und weg.txt anlegen und dort die Ergebnise reinschreiben.
 
Nene ich meinte es eher so.

Mein Homeserver hat eine mysql-Datenbank mit einer Tabelle, wo u.a. die externe IP des Servers drinsteht. Das muss ich aber immer manuell eintragen und ist so nicht tauglich.

Ergo brauche ich ein Tool/Batchdatei/phpscript, welches in regelmäßigen Abständen (z.Bsp. 3-4 Minuten) sich die externe IP holt (vom Router, von ner Inetseite, per cmd-Befehl, wie auch immer, jedenfalls habe ich keine Ahnung wie man das programmiertechnisch realisieren kann) und diese IP dann mit der in der Datenbank abgleicht. Sollte die in der DB veraltet sein, so schreibt er die neue drüber.
 
theKSK schrieb:
ich versteh zwar im grunde garnicht was zu überhaupt willst, aber vll hilft dir das ja:
http://dyndns.com/

Nein das hilft mir leider nicht. Ich nutze das schon.
Bei der Weiterleitung vom Router zum Heim-PC verzwackt der was. Da hilft weder dyndns, noch ein Editieren der Hosts oder lmhosts.sam

Das was ich suche behebt aber in voller LÄnge das Problem
 
habe ich das richtig verstanden? du hast zuhause einen server stehen, der deine aktuelle WAN-IP benötigt. dies soll als cron laufen...
 
Und was soll dir dann bitte die IP-Adresse bringen? Auch wenn du 50 Clients hinter deinem Router geklemmt hast, sie haben extern alle die gleich IP-Adresse...

Mach es mit DynDNS, da hast du immer die aktuelle "IP-Adresse" in Form einer URL... und dann musst du halt noch ne Weiterleitung (Port Forwarding) in deinem Router machen. Der mySQL-Server wird ja über einen bestimmten Port angesprochen, den leitest du dann an deine Interne IP weiter

Gruß
 
Typischer Fall von: "Ich habe ein Problem. Ich überlege mir eine Lösung. Die Lösung bekomme ich nicht hin. Ich frage in einem Forum wie ich die Lösung umsetzen kann, obwohl die Schilderung der Urspungproblems deutlich sinnvoller wäre."

Wahrscheinlich ist es genau das was Gurkenraspel meint, aber das aus deiner Problembeschreibung herauszulesen ist auch alles andere als einfach...
 
CHaos.Gentle schrieb:
habe ich das richtig verstanden? du hast zuhause einen server stehen, der deine aktuelle WAN-IP benötigt. dies soll als cron laufen...

ChaosGentle hat es doch richtig erfasst.

Der Server hat eine Datenbank. In diese Datenbank ist eine Tabelle wo eine IP angegeben ist. Wenn die IP sich aber ändert (was ja nur durch ständige Abfrage der WAN-IP geschehen kann) soll er die neue in die DB anstelle der alten schreiben.


Gurkenraspel und 1668mib: Genau, ich habe ein Problem. DIe Lösung des Problems ist genau das was ich oben angesprochen habe. Diese Lösung zu vollziehen bin ich aber nicht fähig, da mir die Programmierkenntnisse fehlen. Einen anderen Weg gibt es eben nicht. Dyndns nutze ich schon, kann dieses spezifische Problem aber eben nicht lösen, da es dyndns NICHT betrifft.
 
Da du ja schon DYNDns nutzt kannst du doch einfach ein Batchskript machen, welches einen Ping auf deine DYNDNS URL absetzt, dann hast du jedes mal die aktuelle IP-Adresse von dir, weil ja die Dyndns mit deiner WAN-IP verknüpft ist, ergo sie ist immer aktuell ^^

Die kannst ja noch in eine Textdatei routen und dann in deine DB speichern. Wie das funktioniert steht oben.
 
Wie das funktioniert steht leider nicht oben.
In einem anderen Forum wurde nen guter Beitrag geschrieben aber ich komme einfach nicht weiter:

Ich habe jetzt zwar verstanden wie ich das als permanten Job einrichten kann, nicht aber wie ich das selbst mache.
Sprich ich erstelle ne Txt, bennene die zu xyz.cmd um(richtig?) und dann bearbeiten und da kommt das script rein.
Aber wie weiter?

nslookup xyz.dyndns.org
\\PFAD-ZU-MYSQL-BIN\\/mysql -e "UPDATE GewuenschteTabelle SET adress= "ip_address" WHERE id = 1"

So GewueschteTabelle ist der Tabellenname? Ja aber die Datenbank muss doch auch noch angegeben werden oder
Und wo find ich den Pfad zur mysql-bin.
In dem obigen Zweizeiler fehlt doch irgendwie noch der übergang, sprich auslesen der ip(steht ja adress: xxx.xxx.xxx.xx

Sorry, das klingt so blöd was ich schreibe aber ich weiß das alles wirklich nicht
 
Also Metzlor hat es oben beschrieben...

ping dein.dyndns.adresse.org -n 1 > aktuellip.txt

Und wie du es in dein DB schreibst steht in deinem Zitierten Beitrag, oder?

\\PFAD-ZU-MYSQL-BIN\\/mysql -e "UPDATE GewuenschteTabelle SET adress= "ip_address" WHERE id = 1"

Dann hast du in der genannten Textdatei deine Ip-Adressen stehen. Ob das mit dem SQL funkioniert weiß ich nicht, das musst du dann schon selber probieren.
 
In der Datei steht aber mehr als nur die Ip Adresse. Wie krieg ich die extrahiert?
 
Musst du die restlichen Zeichen "stripen". Geht sicherlich auch mit der Batchprogrammierung, weiß ich persönlich leider nicht.

Am besten mal Googlen :)
 
mit dem find-befehl kannst du die ausgabe evtl auch auf die relevante zeile begrenzen...
 
Hab jetzt in meiner test.bat
Code:
REM 1. *** IP-Adresse mittels ipconfig auslesen u. in ip1.txt schreiben ***
nslookup schlingendorntal.dyndns.org | find "Ad" > ip1.txt
REM *** ergibt den Inhalt "        IP-Adresse. . . . . . . . . . . . : 213.123.123.123" in ip1.txt ***

REM 2. *** nun den vorderen Teil "        IP-Adresse. . . . . . . . . . . . :" in ip2.txt ablegen ***
for /f "tokens=1-2 delims=:" %%i in (ip1.txt) do echo %%j > ip2.txt

So=>
1. Die IP steht mitt paar Leerzeichen vorneweg also statt
Code:
xx.xxx.xxx.xx
leider
(die "___" simmulieren die Leerzeichen)
2.Wie kreiere ich jetzt den Übergang, sprich ich hole IP aus der ip2.txt und führe dann
Code:
C:\xampp\mysql\data\datenbank2\ /mysql -e "UPDATE datenbanktabelle SET adress = "ip_adress" WHERE id = 1"
 
Kannst du das nicht in die Batch datei integrieren?

mit type ip.txt kannst du die ip.txt anzeigen lassen.
Könntest ja mal testweise
C:\xampp\mysql\data\datenbank2\ /mysql -e "UPDATE datenbanktabelle SET adress = type ip.txt WHERE id = 1"
ausprobieren, ob es gelingt weiß ich allerdings nicht.

Mir fällt gerade ein könntest du nicht statt ip.txt dies als SQL Scrypt speichern und ausführen lassen?
 
Zuletzt bearbeitet:
Ich habe keine Ahnung, xd.

Aber was haltet ihr davon:

Code:
@echo off & setlocal
for /f "tokens=2" %%i in ('nslookup schlingendorntal.dyndns.org^|find "Add"') do set "ip_adress=%%i"
C:\xampp\mysql\data\datenbankname\ /mysql -e "UPDATE dbtabelle SET adress = "ip_adress" WHERE id = 1"

Macht es das was es soll?
 
Also zum Schluss soll doch nur der Befehl ausgeführt werden:
C:\xampp\mysql\data\datenbank2\ /mysql -e "UPDATE datenbanktabelle SET adress = "ip_adress" WHERE id = 1"

SET /P T=<ip2.txt
Wird in der Variable T die IP2.txt gespeichert.

Wenn du jetzt eine 2te Bat datei erstellst, wo drin steht
C:\xampp\mysql\data\datenbank2\ /mysql -e "UPDATE datenbanktabelle SET adress = %1 WHERE id = 1"

und diese dann aufrufst mit (2te BAT DATEI) %T%

wird in %1 der Inhalt von T reingeschrieben, was ja folglich die IP Adresse ist, das müsste funktionieren.
 
Zuletzt bearbeitet:
es funzt und zugleich nicht

@echo off & setlocal
Set abc=C:\xampp\mysql\bin\mysql.exe
for /f "tokens=2" %i in ('nslookup xyz.dyndns.org^|find "Add"') do set "IP=%i"
Set stmt="UPDATE tabelle SET address = '%IP%' WHERE id = 1"
%abc% --user=root --password=meinPW --execute=%stmt% datenbank


Wenn ich das zeilenweise manuell in cmd eingebe, funzt es.
Wenn ich es per bat ausführen lasse, hängt er mir noch ein ) hinter die IP in der DB also xx.xx.xx.xx) oder wie jetzt gerade ändert gar nichtsmehr (obwohl das script stimmt.. warum)
Wie beheb ich das?

edit: habs jetzt. Im Batch MUSS %%i stehen. Führt man es selber per cmd durch MUSS %i stehen. Wie unlogisch
 
Zuletzt bearbeitet:

Ähnliche Themen

Zurück
Oben