6 Stimmen

Python: CGI-Programm möchte die IP-Adresse der aufrufenden Webseite erfahren

Ich bin neu in der Python-Programmierung.

Ich komme nicht weiter, was eigentlich ein einfaches Verfahren sein sollte. Ich habe ein kleines und einfaches Python-Programm, das als CGI-Programm von einer Webseite aufgerufen wird.

Ich möchte lediglich die IP-Adresse aus den HTTP-Header-Feldern extrahieren. In PHP wäre dies zum Beispiel der Wert von $_SERVER['REMOTE_ADDR'] .

Ich habe nachgeforscht und bin darauf gestoßen, dass ich web.ctx.ip verwenden muss, aber wenn ich dieses Bit im Code verwende, gibt es eine Ausnahme. Wahrscheinlich muss ich etwas importieren. Ich habe die folgenden einzelnen Importe ohne Erfolg ausprobiert:

import web
import webapi as web

Ich würde mich über eine vollständig Codeschnipsel, der zeigt, was ich importieren muss. Mein Python-CGI-Programm läuft auf einem Linux-Rechner, auf dem eine Python-Basisversion 2.4.3 installiert ist. Muss ich noch etwas anderes installieren?

7voto

agf Punkte 159286

Von aquí :

# When run as a cgi script, this will print the client's IP address.

import html
import os

print("Content-type: text/html")
print("")

print html.escape(os.environ["REMOTE_ADDR"])

Die Suche war für "python cgi get ip address" und es war das erste Ergebnis. Diese Antwort gilt für allgemeines Python-CGI, wenn Sie eine andere Schnittstelle/Bibliothek verwenden, könnte es anders sein. Wie Sie jedoch sehen können, ist es genau das Gleiche wie die PHP-Version.

1voto

codehawk Punkte 11

Das obige Beispiel hat bei mir gut funktioniert. Für lokale Tests habe ich ein kleines Extra hinzugefügt. Ich musste lange suchen, um dieses Beispiel zu finden, also "Danke!"

import cgi
import os

def f_get_ipaddress():
    try:
        ipaddress = cgi.escape(os.environ["REMOTE_ADDR"])
    except:
        ipaddress = "127.0.0.1"

    return ipaddress

print "Content-type: text/html"
print ""

ipaddress = f_get_ipaddress()

print ipaddress

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X