2013-06-02 2 views
0

어떻게 파이썬에서 원격 IP 주소를 얻을 수 있습니까?파이썬에서 원격 IP 주소 받기

Google 검색을 시도했지만 유용한 결과를 찾을 수 없습니다. os.environ['REMOTE_ADDR']이 제공하는 것 KeyError: 'REMOTE_ADDR'

+2

@AshwiniChaudhary : 그건 잘못되었습니다. 그는 자신의 웹 앱에 연결하는 클라이언트의 IP 주소가 필요합니다. 앱이 실행되는 서버가 아닙니다. – Cairnarvon

+0

스택 모양은 어떻습니까? –

+0

@ThomasOrozco Debian, Apache 2.2 및 Python 2.7 –

답변

2

당신은 운영 체제의 os 환경이 아닌 request 년대에 접근하고 있습니다.

WSGI이 호출은 두 개의 변수, environstart_response를 전달해야하고, 그 environ 변수는 당신이 찾고있는 변수를해야합니다.

CGI 앱을 실행하는 경우 해당 변수는 실제 os.environ에만 표시됩니다.


사용중인 웹 프레임 워크에 따라 액세스 권한이 없을 수 있습니다. request 개체가 전달 된 경우 request.META 또는 비슷한 것으로 끝납니다.

프레임 워크를 사용하지 않는 경우 the environ dict that is passed to your wsgi callable이됩니다.

으로는 REMOTE_ADDR은 사양에 따라 자신을 수이없는 않지만, 아파치의 mod_wsgi를 사용하는 경우, 그것은이 있어야, 다른 답변에서 언급했다.

+0

언급 할 가치가있는 'REMOTE_ADDR'은 전달자의 주소 일 수 있습니다. 설치에는 웹 응용 프로그램 방화벽, nginx와 같은 요청을 처리하는 프록시 또는 기타 이와 같은 설정이 있습니다. 이 경우,'HTTP_X_FORWARDED_FOR'의 존재를 검사 할 가치가 있습니다. –

2

TCP 소켓에 액세스 할 수있는 경우 socket.getpeername()을 사용하여 원격 주소를 가져올 수 있습니다. Docs are here.