Python захватывает переменные окружения из прокси - PullRequest
0 голосов
/ 02 февраля 2012

когда я использую внешний bash-скрипт против моего прокси, я получаю все переменные окружения

#!/bin/bash

CAPTURE_FILE=/var/log/capture_data
env >> ${CAPTURE_FILE}

# we use exit code 1 to ensure this does not effect the actual browsing
exit 1
#

вывод этого скрипта при обращении клиента к веб-странице:

HTTP_PORT=80
HTTP_HOST=ads.cnn.com
SERVER[adserver]=ad3ad3:9678:1
CLIENT[referer]=http://edition.cnn.com/
HTTP_PROTO=http
CLIENT[host]=ads.cnn.com
SERVER[vary]=Cookie
SERVER[connection]=Keep-Alive
CLIENTID=2
USERNAME=anonymous@192.168.221.1
SERVER[keep-alive]=timeout=5, max=15
SERVER[date]=Thu, 02 Feb 2012 12:09:46 GMT
SERVER[content-type]=text/html
CLIENT[user-agent]=Safari
PWD=/
VERSION=SR.4.2.2.MR.20110523

Теперь я использовал os.environ для python (спасибо за один из предыдущих постов здесь), и он работает, но только с терминала, а не когда прокси передает все запросы к нему

#!/usr/bin/env python

import os
import sys

def capture():

    log = os.environ
    data = open("/tmp/capture.log", "a")
    for key in log.keys():
        data.write((key))
        data.write(" : ")
        for n in log[key]:
            data.write('%s' % ((n)))
        data.write("\n")
    data.close()
    sys.exit(1)

def main():

    capture()

if __name__ == "__main__":
    main()

Я могу читать данные из стандартного sys.stdin.readlines (), но я получаю более точные результаты из переменных среды, когда прокси-сервер перенаправляет запросы в сценарий ...

есть идеи, почему скрипт python не отображает никаких данных?

log из / var / log / messages

Feb  3 22:29:02 safesquid capture.py: abrt: detected unhandled Python exception in /opt/safesquid/safesquid/scripts/capture.py
Feb  3 22:30:00 safesquid capture.py: abrt: detected unhandled Python exception in /opt/safesquid/safesquid/scripts/capture.py
Feb  3 22:30:00 safesquid capture.py: abrt: detected unhandled Python exception in /opt/safesquid/safesquid/scripts/capture.py
Feb  3 22:30:01 safesquid capture.py: abrt: detected unhandled Python exception in /opt/safesquid/safesquid/scripts/capture.py

ПОСТАНОВИЛИ:

Я перенес этот же скрипт в centos 6.2, и он работал .... похоже, у него были проблемы с fedora.

1 Ответ

1 голос
/ 02 февраля 2012

Если вы используете тот же вывод, что и команда unix env, можете ли вы вызвать ее напрямую?

log = subprocess.check_output("env")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...