Proxy in einem Python-Script

This forum was archived to /woltlab and is now in read-only mode.
  • Hallo zusammen


    ich würde gerne ein Pythonscript erweitern, so dass es ein Proxy verwendet.
    Wenn ich das Script auf der CLI ausführe, schnappt sich dieses die Umgebungsvariable. Wenn ich das Script via CronJob laufen lasse, dann eben nicht.
    Ich hab's auch schon mittels Wrapper versucht, leider ebenfalls vergebens.


    Somit bleibt mir wohl nur den Gang über eine Erweiterung innerhalb des Scriptes.


    Wer kann mir hierzu ein Tipp geben wie ich das aufgeführte Script via proxyhandler laufen lassen kann ?



    Vielen Dank
    Grüsse
    Azubi

  • [qutoe]Wenn ich das Script auf der CLI ausführe, schnappt sich dieses die Umgebungsvariable. Wenn ich das Script via CronJob laufen lasse, dann eben nicht.[/quote]Wird die Variable innerhalb des crontab-Eintrags vor der Ausführung des Scripts gesetzt?

  • Servus


    nein, das hat leider nicht geklappt (wenn's wir dann vom gleichen sprechen)
    Ich hab folgendes Versucht:
    Crontab :

    Code
    1. #
    2. #
    3. HTTP_PROXY=http://1.2.3.4:8080
    4. #
    5. #minute hour mday month wday who command


    Sowie Folgendes:

    Code
    1. * * * * * . /root/bin/env ; /root/bin/pyton_script.py


    Noch ein Tipp ?


    Gruss
    Azubi

  • Code
    1. * * * * * . /root/bin/env ; /root/bin/pyton_script.py


    Noch ein Tipp ?

    Tut

    Code
    1. * * * * * /bin/sh -c ". /root/bin/env ; /root/bin/pyton_script.py"


    besser? Oder braucht die Python noch ihr "H" ... ?

  • Das mit der Shell vorangestellt klappt leider auch nicht.


    Nun habe ich mir die Umgebungsvariablen, welche noch nach dem Scriptaufruf vorhanden sind anzeigen lassen :

    Code
    1. /bin/sh -c ". /root/bin/env_file ; /root/bin/sync_repos.py ; /root/bin/getinfo.sh"


    Das Resultat währe ja vielversprechend, aber eben, der HTTP_PROXY "zieht" nicht.


    Code
    1. SHELL=/bin/bash
    2. USER=root
    3. PATH=/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/home/user1/stjakl/bin:/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/X11R6/bin:/usr/games:/opt/kde3/bin:/usr/lib/jvm/jre/bin:/usr/lib/mit/bin:/usr/lib/mit/sbin:/sbin:/usr/sbin:/usr/local/sbin
    4. _=/bin/env
    5. PWD=/root
    6. SHLVL=2
    7. HOME=/root
    8. HTTP_PROXY=http://1.2.3.4:8080
    9. LOGNAME=root


    Was meinst du denn mit ?

    Quote

    Oder braucht die Python noch ihr "H" ... ?

  • Was meinst du denn mit ?

    Daß ich noch keinen Beweis gesehen habe, daß Dein cron Job das Skript - das dort "/root/bin/pyton_script.py" heißt - unter diesem Namen jemals findet.

  • Du meinst sowas ? :

    Code
    1. grep /root/bin/sync_repos.py /var/log/cron
    2. Oct 14 11:10:01 server01 CROND[24083]: (root) CMD (. /root/bin/env_file ; /root/bin/sync_repos.py)
    3. Oct 15 07:45:01 servert01 CROND[8226]: (root) CMD (/bin/sh -c ". /root/bin/env_file ; /root/bin/sync_repos.py")
    4. Oct 15 08:03:01 server01 CROND[8569]: (root) CMD (/bin/sh -c ". /root/bin/env_file ; /root/bin/sync_repos.py ; /root/bin/getinfo.sh")
    5. Oct 16 08:03:01 server01 CROND[2570]: (root) CMD (/bin/sh -c ". /root/bin/env_file ; /root/bin/sync_repos.py ; /root/bin/getinfo.sh")
    6. Oct 16 08:28:02 server01 CROND[3165]: (root) CMD (/bin/sh -c ". /root/bin/env_file ; /root/bin/sync_repos.py ; /root/bin/getinfo.sh")


    Die Pfade sind ja absolut angegeben. Demzufolge sollte sie der Cronjob auch finden. ;)



    Nun aber ein :thumbsup: an pitchfork mit dem Tipp für die Kleinschreibung der Umgebugnsvariable. Dies scheint zu helfen, sprich das Script lief jetzt erfolgreich durch.
    Danke vielmals.


    Grüsse
    Azubi

  • so wie es aussieht kämpfst du mit spacewalk-reposync...oder? ;)
    Poste mal deine einstellung für proxy aus /etc/rhn/rhn.conf (server.satellite.http_proxy)

  • Genau. Spacewalk :thumbsup:.


    Die server.satellite.http_proxy ist leer. Meist du dass es auch daran liegen könnte ?



    Gruss
    Azubi

  • yep....trag da proxy:port a la

    Code
    1. server.satellite.http_proxy = proxy:3128