Wiederholungen in Regex

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Benutzeravatar
snafu
User
Beiträge: 6738
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

@roschi: Was glaubst du was ich die ganze Zeit tue? Mein Link zeigt sogar einen "jungfräulichen" Text (also ohne jegliche HTML-Formatierung) an. ;)

Die Frage kam ja erst auf, als mir gesagt wurde, dass ich die IPs anderer Seiten auch ohne ein externes Programm abfragen kann. Und nun ging es mir darum, auch die eigene IP anzeigen zu können ohne eine andere Website dafür bemühen zu müssen. Das scheint aber etwas komplizierter zu sein und daher belasse ich die Funktion bisher auch bei der urllib-Lösung.
Benutzeravatar
helduel
User
Beiträge: 300
Registriert: Montag 23. Juli 2007, 14:05
Wohnort: Laupheim

snafu hat geschrieben:Und woher weiß ich was mein ifname ist?
ifconfig bei Linux, ipconfig bei Windows.
Benutzeravatar
roschi
User
Beiträge: 225
Registriert: Samstag 29. März 2008, 18:58
Wohnort: Thueringen, Deutschland
Kontaktdaten:

snafu hat geschrieben:@roschi: Was glaubst du was ich die ganze Zeit tue? Mein Link zeigt sogar einen "jungfräulichen" Text (also ohne jegliche HTML-Formatierung) an.
upps, das habe ich uebersehen.
aber es ist gut, einen server mit jungfraeulicher response zu kennen ^^

mfg
roschi

[edit]
sorry, dass ich dir nicht weiterhelfen konnte :(
[/edit]
Zuletzt geändert von roschi am Mittwoch 15. Oktober 2008, 12:41, insgesamt 1-mal geändert.
[size=117]Fuer Alle, die in Python einsteigen wollen, kann ich das Buch [url=http://abop-german.berlios.de/]A Byte of Python[/url] nur waermstens empfehlen![/size]
Benutzeravatar
snafu
User
Beiträge: 6738
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Super vielen Danke für die Hilfe. :)
Benutzeravatar
snafu
User
Beiträge: 6738
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Ich habe mich etwas in die Abläufe eingelesen und den Code halbwegs nachvollziehbar in "own_ip()" strukturiert. Kann ich auch Python-intern den ifname herausfinden?

Der Code: http://paste.pocoo.org/show/88077/
Benutzeravatar
helduel
User
Beiträge: 300
Registriert: Montag 23. Juli 2007, 14:05
Wohnort: Laupheim

snafu hat geschrieben:Kann ich auch Python-intern den ifname herausfinden?
Kurz bei Google vorbeigeschaut: http://code.activestate.com/recipes/439093/
Benutzeravatar
snafu
User
Beiträge: 6738
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

So, jetzt sollte es hoffentlich plattformübergreifend laufen: http://paste.pocoo.org/show/88136/

EDIT: Wohl doch nicht. Hab's gerade von jemandem testen lassen. Die IP befindet sich wohl nicht immer an [52:56]. Wäre ja auch zu schön gewesen. :(
Benutzeravatar
snafu
User
Beiträge: 6738
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Jetzt sollte es gehen. Vielleicht mag das ja mal jemand testen... :)

http://paste.pocoo.org/show/88167/
farid
User
Beiträge: 95
Registriert: Mittwoch 8. Oktober 2008, 15:37

snafu hat geschrieben:Innerhalb eines Skripts zur Anzeige der IP habe ich folgenden Ausdruck:
Wenn es nicht nur eine Uebung in Regexp sein soll, warum nicht explizit, z.B. so?

Code: Alles auswählen

#!/usr/bin/env python
# checkip.py -- check IPv4 dotted quad address

def check_ip(ip_str):
    "Check an IPv4 address in dotted quad notation"
    try:
        quad = map(int, ip_str.split('.'))
        if len(quad) != 4: return False
        for q in quad:
            if q < 0 or q > 255:
                return False
        return True
    except:
        return False

if __name__ == '__main__':
    import sys
    print check_ip(sys.argv[1])
Natuerlich faengt es nicht alle Sonderfaelle ab (Broadcast, Anycast, Multicast etc...), aber es ist IMHO besser als die regexp Loesung...
BlackJack

Es ging ja ursprünglich nicht um's Testen sondern um's Finden einer IP in einer Zeichenkette.

Meine Variation der Testfunktion (ungetestet):

Code: Alles auswählen

def is_ip(string):
    parts = string.split('.', 3)
    if len(parts) < 4:
        return False
    try:
        return all(0 <= int(p) <= 255 for p in parts)
    except ValueError:
        return False
Benutzeravatar
roschi
User
Beiträge: 225
Registriert: Samstag 29. März 2008, 18:58
Wohnort: Thueringen, Deutschland
Kontaktdaten:

hallo!!
snafu hat geschrieben:etzt sollte es gehen. Vielleicht mag das ja mal jemand testen...

http://paste.pocoo.org/show/88167/
wie soll das plattformunabhaengig gehen? es gibt unter windows kein fcntl, leider. :(

mfg
roschi
[size=117]Fuer Alle, die in Python einsteigen wollen, kann ich das Buch [url=http://abop-german.berlios.de/]A Byte of Python[/url] nur waermstens empfehlen![/size]
Benutzeravatar
snafu
User
Beiträge: 6738
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

@roschi:

Achso, das wusste ich nicht (wahrscheinlich in der Doku überlesen). Hat denn schon jemand unter Unix/Linux & Friends getestet ob es seine korrekte IP zurück gibt?
fred.reichbier
User
Beiträge: 155
Registriert: Freitag 29. Dezember 2006, 18:27

Das gibt nur meine interne IP zurück (192.168. ...). Ich glaub, um die IP des Routers herauszufinden, musst du wirklich auf sowas wie checkip.dyndns.org zurückgreifen.

Gruß Fred
Benutzeravatar
snafu
User
Beiträge: 6738
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Okay, mit nem Router hab ich's nicht getestet, ohne Router stimmt sie. Kannst ja mal probieren deine interne IP ebenfalls auszuschliessen (Zeile 27). Ich weiß aber ehrlich gesagt nicht ob die Funktion bis nach "draußen", sprich: an die IP des Routers, kommt.

EDIT: Hab's jemanden mit Router testen lassen. Geht leider nicht. Hätte mich auch gewundert.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

snafu hat geschrieben:EDIT: Hab's jemanden mit Router testen lassen. Geht leider nicht. Hätte mich auch gewundert.
Natürlich nicht. Das ist ja der ganze Punkt von NAT und auch der warum wir in Zukunft definitiv IPv6 brauchen. Stell dir mal vor, NATs hinter NATs zu traversieren, allein die Idee ist so fürchterlich, dass man das gar nicht glauben will.

Siehe The future without IPv6. Daraufhin habe ich mich gleich umgesehen, ob mein ISP IPv6-Zugänge bereitstellt (tut er nicht).
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
farid
User
Beiträge: 95
Registriert: Mittwoch 8. Oktober 2008, 15:37

Naja, das tut er nicht, weil er bereits einen ausreichenden Block von IPv4 Adressen hat, und damit offenbar noch gut auskommt... und zur Not noch einen weiteren Block bekommen kann.

In Asien ist die Situation deutlich angespannter und APNIC hat auch wenn man die Bevoelkerungsdichte beruecksichtigt deutlich weniger IPv4 Adressraum zu vergeben als RIPE oder ARIN.

Darum kriegt man z.B. in Japan oder Korea jetzt schon standardmaessig IPv6 Adressen zugeteilt; und muss fuer frische IPv4 Adressen mittlerweile bei den meisten ISPs einen Zuschlag zwischen USD 10 und USD 25 pro Monat bezahlen (sogar fuer dynamische IPv4 Adressen), waehrend die IPv6 Adressen zuschlagsfrei sind.
lunar

Wobei China da wohl schlimmer dran ist als Korea oder Japan, da die Zahl der Internetanschlüsse dort wesentlich schneller wächst.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Wie verläuft das eigentlich bei der großen Anzahl von IPv6-Clients, dass die dann auch auf IPv4-only-Services zugreifen können? Über so lustige Tunnels wie 6bone odr ähnliches? Schließlich ist ein großer Teil des Internets in Europa und Nordamerika nicht IPv6-erreichbar.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
snafu
User
Beiträge: 6738
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Internet"technik" ist definitiv etwas wo ich ne Menge Nachholbedarf aber auch großes Interesse habe. In meinem Studium ist neben den beiden Fächern auch der sogenannte Optionalbereich verpflichtend, in dem man u.a. informationstechnische Veranstaltungen besuchen kann. In diesem Semester habe ich "HTML im Studium" gewählt und ich bin mal sehr gespannt was in den nächsten Semestern so angeboten wird. :) (Sorry, war jetzt etwas offtopic).

Könnt ihr denn gute Bücher empfehlen, die einen Überblick zu den Abläufen im Internet geben (z.B. wie Client und Server miteinander kommunizieren, was im Hintergrund abläuft, wenn ich über das Modul "socket" die IP einer Seite abfrage usw.)?
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

snafu hat geschrieben:Könnt ihr denn gute Bücher empfehlen, die einen Überblick zu den Abläufen im Internet geben (z.B. wie Client und Server miteinander kommunizieren, was im Hintergrund abläuft, wenn ich über das Modul "socket" die IP einer Seite abfrage usw.)?
In diesem Bereich ist wohl TCP/IP von W. Richard Stevens (gibt es auch in deutsch), der absolute Klassiker.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Antworten