Skip to main content

Simple Python HTTP Exec Server

Project description

Pypi version example Licence Python versions

pywebexec

Simple Python HTTP(S) API/Web Command Launcher

Install

$ pip install pywebexec

Quick start

  • put in a directory the scripts/commands/links to commands you want to expose
  • start http server serving current directory executables listening on 0.0.0.0 port 8080
$ pywebexec
  • Launch commands with params/view live output/Status using browser pywebexec

features

  • Serve executables in a directory
  • Launch commands with params from web browser or API call
  • Follow live output
  • Stop command
  • Relaunch command
  • HTTPS support
  • HTTPS self-signed certificate generator
  • Basic Auth
  • LDAP(S)
  • Can be started as a daemon (POSIX)
  • uses gunicorn to serve http/https
  • compatible Linux/MacOS

Customize server

$ pywebexec --dir ~/myscripts --listen 0.0.0.0 --port 8080
$ pywebexec -d ~/myscripts -l 0.0.0.0 -p 8080

Basic auth

  • single user/password
$ pywebexec --user myuser [--password mypass]
$ pywebexec -u myuser [-P mypass]

Generated password is given if no --pasword option

  • ldap(s) password check / group member
$ export PYWEBEXEC_LDAP_SERVER=ldap.forumsys.com
$ export PYWEBEXEC_LDAP_USE_SSL=0
$ export PYWEBEXEC_LDAP_BIND_DN="cn=read-only-admin,dc=example,dc=com"
$ export PYWEBEXEC_LDAP_BIND_PASSWORD="password"
$ export PYWEBEXEC_LDAP_GROUPS=mathematicians,scientists
$ export PYWEBEXEC_LDAP_USER_ID="uid"
$ export PYWEBEXEC_LDAP_BASE_DN="dc=example,dc=com"
$ pywebexec

HTTPS server

  • Generate auto-signed certificate and start https server
$ pywebfs --gencert
$ pywebfs --g
  • Start https server using existing certificate
$ pywebfs --cert /pathto/host.cert --key /pathto/host.key
$ pywebfs -c /pathto/host.cert -k /pathto/host.key

Launch server as a daemon

$ pywebexec start
$ pywebexec status
$ pywebexec stop
  • log of server are stored in directory [.config/].pywebexec/pywebexec_<listen>:<port>.log

Launch command through API

$ curl http://myhost:8080/run_script -H 'Content-Type: application/json' -X POST -d '{ "script_name":"myscript", "param":["param1", ...]}

API reference

method route params/payload returns
POST /run_command command: str
params: array[str]
command_id: uuid
message: str
POST /stop_command/command_id message: str
GET /command_status/command_id command_id: uuid
command: str
params: array[str]
start_time: isotime
end_time: isotime
status: str
exit_code: int
GET /command_output/command_id output: str
status: str
GET /commands array of
command_id: uuid
command: str
start_time: isotime
end_time: isotime
status: str
exit_code: int
GET /executables array of str

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pywebexec-1.1.1.tar.gz (20.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pywebexec-1.1.1-py3-none-any.whl (19.6 kB view details)

Uploaded Python 3

File details

Details for the file pywebexec-1.1.1.tar.gz.

File metadata

  • Download URL: pywebexec-1.1.1.tar.gz
  • Upload date:
  • Size: 20.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.9.21

File hashes

Hashes for pywebexec-1.1.1.tar.gz
Algorithm Hash digest
SHA256 2e6eba6f9ae1003de81da7ecb345ebc153fdb26602ebd95192da79ecdbb85603
MD5 db861c164cbc65b4c94535027b62b0ca
BLAKE2b-256 75ceb7926cf70d69c52b814c382dd26072b8bf7b8f44bde1954cc5078cb53407

See more details on using hashes here.

File details

Details for the file pywebexec-1.1.1-py3-none-any.whl.

File metadata

  • Download URL: pywebexec-1.1.1-py3-none-any.whl
  • Upload date:
  • Size: 19.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.9.21

File hashes

Hashes for pywebexec-1.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 148e80f38810b32639f3d95d02c9a6bec02f4a9820afb36c2eb0e8089153789c
MD5 80b9f64251f0160051c8f6c639d64e2e
BLAKE2b-256 9eb224ffeaac9b715a6a42e1071cb7c05d98a26dcac835e6f19c5461f3f68d81

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page