Seite 1 von 1
IP erkennen/rausbekommen.
Verfasst: Freitag 27. September 2002, 11:50
von piddon
Ich suche eine efiziente Möglichkeit die IP zu bekommen, die man NACH einer Einwahl bei dem Provider bekommen hat.
Momentan nutze ich unter Windows ipconfig und werte das aus, aber geht das nicht auch irgentwie einfacher, bzw. Sicherer? Denn IPCONFIG liefert ja je nach system andere "werte" sprich mehr oder weniger Infos. Bei 2 Netzwerkkarten bekomme ich info über beide KArten + Info zur Verbindung. Das ist schlecht
Also, kennt jemand eine einfache Methode?
Verfasst: Samstag 5. Oktober 2002, 13:58
von hans
Piddon, cat /proc/net/route liefert unter Linux folgendes:
Code: Alles auswählen
Iface Destination Gateway Flags RefCnt Use Metric Mask MTU Window IRTT
ppp0 556205D9 00000000 0005 0 0 0 FFFFFFFF 40 0 0
lo 0000007F 00000000 0001 0 0 0 00FFFFFF 40 0 0
eth1 00C9040A 00000000 0001 0 0 0 00FFFFFF 40 0 0
eth0 00C8040A 00000000 0001 0 0 0 00FFFFFF 40 0 0
eth0 00C8040A 00000000 0001 0 0 0 00FFFFFF 40 0 0
ppp0 00000000 556205D9 0003 0 0 0 00000000 40 0 0
Interessant sind hier IFace und Destination. eth0 ist die erste Netzwerkkarte und eth1 die zweite. Unter Destination steht die IP-Adresse (die Bytes von rechts nach links lesen!)
Ich habe kein Windows, also muß ich jetzt raten: deine IP Adresse steht irgendwo in den Tiefen deiner Registry (und wenn du Pech hast, ist bei jeder Windowsversion anders
) Vielleicht mal bei M$ in de Knowledgebase nachschauen. Wenn die es nicht können, versuch's mal bei newsgroups.borland.com (Rubriken c++ oder Delphi) Da habe ich schon so manches gelöst bekommen.
Hans
Verfasst: Donnerstag 17. Oktober 2002, 19:19
von Dookie
Hallo,
ich hatte ein ähnliches Problem, und zwar bei XChat. Für dcc brauchte ich den Eintrag der nach aussen sichtbaren IP, die aber eine ander ist als die die ich von meinem Provider zugewiesen bekomme.
Meine Lösung besteht aus 2 Scripten, einem kleinen php-Script auf einem phpfähigen Server und einem Pythonscript das beim Start von XChat die IP vom Server mit dem Webserverscript holt und in die Config von XChat einträgt.
Hier die Scripts:
einfach als ip.php auf einen Server legen, Du kannst auch gerne meines mitbenutzen
http://www.sol.at/fritz/ip.php
Code: Alles auswählen
#!/usr/bin/env python
import httplib
conn = httplib.HTTPConnection("www.sol.at")
conn.request("GET", "/fritz/ip.php")
res = conn.getresponse()
if res.reason == "OK":
ipnummer = res.read()
conn.close()
ipnummer enthält dann Deine nach aussen sichtbare IP
Gruß
Dookie
Verfasst: Freitag 1. November 2002, 13:15
von Milan
ich kenn mich mit den sockets und anderen Libs zum Internet nich so gut aus, bräuchte sie aber eigentlich. Kannst du mir den Code mal erklären Dookie? ich würde ansonsten das benutzen, aber auch gern deins verstehen:
Code: Alles auswählen
from urllib import urlopen
ip=urlopen('http://www.sol.at/fritz/ip.php').read()
thx Milan
Verfasst: Freitag 1. November 2002, 15:21
von Dookie
Hi Milan,
na dann will ich mal versuchen, den Code auseinanderzudröseln.
Code: Alles auswählen
import httplib
conn = httplib.HTTPConnection("www.sol.at") #Verbindung zum Webserver herstellen
conn.request("GET", "/fritz/ip.php") #die Seite "/fritz/ip.php" anfordern
res = conn.getresponse() # Antwort vom Webserver holen
if res.reason == "OK": # Seite existiert und ist erreichbar
ipnummer = res.read() # ganze Seite lesen
conn.close()
Meine etwas aufwändigere Methode hat den Vorteil, daß, bei einer nicht erreichbaren Seite, ipnummer nicht gesetzt wird, während bei der Verwendung von urlopen eine Seite mit der Fehlermeldung zurückgegeben wird was aber in der Weiteren verarbeitung der Daten dann aufwändiger abgefragt werden müsste., ich kann in meinem Fall ja nicht als IP-Nummer in der XChat.config eine solche Ausgabe eintragen.
Beispiel:
Code: Alles auswählen
>>> ip=urlopen('http://www.sol.at/fritz/up.php').read()
>>> ip
'<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">\n<HTML><HEAD>\n<TITLE>404 Not Found</TITLE>\n</HEAD><BODY>\n<H1>Not Found</H1>\nThe requested URL /fritz/up.php was not found on this server.<P>\n<HR>\n<ADDRESS>Apache/1.3.27 Server at www.sol.at Port 80</ADDRESS>\n</BODY></HTML>\n'
>>> ip=urlopen('http://www.sox.at/fritz/up.php').read()
>>> ip
'<head><title>File Not Found - Datei nicht gefunden</title></head>\n<body><H1>File Not Found - Datei nicht gefunden</h1>\nThe requested URL was not found on this server.<p>\nDie gewünschte URL wurde auf diesem Server nicht gefunden.<p>\n</body>\n'
>>>
Für mich war es auch das erste mal, daß ich so etwas probiert habe und mein Script läuft seit ein paar Monaten ohne Probleme. Wie so oft beim Programmieren, führe viele Wege nach Rom.
Hoffe geholfen zu haben, Gruß
Fritz
Verfasst: Freitag 1. November 2002, 19:07
von Milan
jupp, hat geholfen. thx.