nginx and python script

Ralf Figge Ralf.Figge at bitmail.prima.de
Sat Dec 28 12:16:00 UTC 2024


Hi Jeff,

/i am not shure, that this will be run ok.
That was not the full line to call. I had think, that was only something 
to change in fcgiwrap.
This was a part from a ZTP .
Here the full python script, which run without changing under apache2 
with mod_cgid.

-------------------------------------------------------------------------------------------------------------------------------------
#!/usr/bin/python3

import os
environ = os.environ
serial = "unknown"
ztp_server = "10.1.8.241"

if "HTTP_X_ARISTA_SERIAL" in environ:
     serial = environ["HTTP_X_ARISTA_SERIAL"]
serial = serial.strip()
print("Content-Type: text/plain")
print()
print(f"""#!/usr/bin/Cli -p2
enable
zerotouch script-exec-timeout 18000
copy http://{ztp_server}/ztp/EOS-4.30.1F.swi flash:EOS-4.30.1F.swi
copy http://{ztp_server}/cgi-bin/ztp/create-startup-config.py?{serial} 
flash:startup-config
config
boot system flash:EOS-4.30.1F.swi
reload
""")
------------------------------------------------------------------------------------------------------------------------------------
The //create-startup-config.py run correkt, i have it tested with a 
manual call. /
/
/Am 27.12.2024 um 22:36 schrieb Jeff Dyke:
> Pass {serial} to your proxy from a normal nginx args variable.
> location /another_script {
>     proxy_pass http://server/cgi-bin/another_script.py? 
> <http://server/cgi-bin/another_script.py?%7Bserial%7D>$args
> }
> And then you'll likely want to change from environ to the query 
> string.  I would also make this ?serial=foo.  As the query params are 
> converted to a dict/dataclass.
>
> On Fri, Dec 27, 2024 at 4:15 PM Ralf Figge via nginx <nginx at nginx.org> 
> wrote:
>
>     Hello,
>
>     i am a newbee from nginx. I need to run a python script via
>     cgi-bin. I
>     search for information about python and nginx, and found fcgiwrap und
>     uwsig.
>     I test uwsig (as cgi-bin), but there i become only error 502 Gateway
>     error. fcgiwrap looks like better, But i have 1 problem with it:
>     Here some code for the sript;
>     ----------------------------
>     #!/usr/bin/python3
>
>     import os
>     environ = os.environ
>     serial = "unknown"
>          serial = environ["SERIAL"]
>     serial = serial.strip()
>     ...
>     http://server/cgi-bin/another_script.py?{serial}
>     <http://server/cgi-bin/another_script.py?%7Bserial%7D>
>     ---------------------------------------------------
>
>     My Problem is, that the call "another_script.py" does not have the
>     parameter "?{serial}". (i make a tcpdump from the interface) Has
>     somebody any idea, why it doesn´t go with fcgiwrap?
>
>     It runs under Debian 12, python 3.12, nginx 1.26.2 .
>
>     regards
>     Ralf
>     _______________________________________________
>     nginx mailing list
>     nginx at nginx.org
>     https://mailman.nginx.org/mailman/listinfo/nginx
>
>
> _______________________________________________
> nginx mailing list
> nginx at nginx.org
> https://mailman.nginx.org/mailman/listinfo/nginx
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.nginx.org/pipermail/nginx/attachments/20241228/6e4569e0/attachment.htm>


More information about the nginx mailing list