Simple Python HTTP Exec Server
Project description
pywebexec
Simple Python HTTP(S) API/Web Command Launcher and Terminal sharing
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 -d <dir>
- Launch commands with params/view live output/Status using browser
- Share your terminal output using
pywebexec -d <dir> term
all commands output / statuses are available in the executables directory in subdirectory .web_status
features
- Serve executables in a directory
- Launch commands with params from web browser or API call
- multiple share terminal output
- Follow live output
- Stop command
- Relaunch command
- HTTPS support
- HTTPS self-signed certificate generator
- Basic Auth
- LDAP(S) password check/group member
- Safe url token generation
- Can be started as a daemon (POSIX)
- Uses gunicorn to serve http/https
- Linux/MacOS compatible
Customize server
$ pywebexec --dir ~/myscripts --listen 0.0.0.0 --port 8080 --title myscripts
$ pywebexec -d ~/myscripts -l 0.0.0.0 -p 8080 -t myscripts
Safe url token
- generate safe url, use the url to access the server
$ pywebexec -T
$ pywebexec --tokenurl
Starting server:
http://<host>:8080?token=jSTWiNgEVkddeEJ7I97x2ekOeaiXs2mErRSKNxm3DP0
http://x.x.x.x:8080?token=jSTWiNgEVkddeEJ7I97x2ekOeaiXs2mErRSKNxm3DP0
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://ldap.forumsys.com:389
$ export PYWEBEXEC_LDAP_BIND_DN="cn=read-only-admin,dc=example,dc=com"
$ export PYWEBEXEC_LDAP_BIND_PASSWORD="password"
$ export PYWEBEXEC_LDAP_GROUPS="ou=mathematicians,ou=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
$ pywebexec --gencert
$ pywebexec --g
- Start https server using existing certificate
$ pywebexec --cert /pathto/host.cert --key /pathto/host.key
$ pywebexec -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_command -H 'Content-Type: application/json' -X POST -d '{ "command":"myscript", "params":["param1", ...]}'
$ curl http://myhost:8080/command_status/<command_id>
$ curl http://myhost:8080/command_output/<command_id> -H "Accept: text/plain"
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 last_output_line: str |
|
| GET | /command_output/command_id | offset: int | output: str status: str links: { next: str } |
| GET | /commands | array of command_id: uuid command: str start_time: isotime end_time: isotime status: str exit_code: int last_output_line: str |
|
| 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.3.4.tar.gz
(872.5 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
pywebexec-1.3.4-py3-none-any.whl
(872.2 kB
view details)
File details
Details for the file pywebexec-1.3.4.tar.gz.
File metadata
- Download URL: pywebexec-1.3.4.tar.gz
- Upload date:
- Size: 872.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.9.21
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
563c6e16ffca805cf9acdbb8929758bdba1427945a44a5684f1b3a4fae5cca26
|
|
| MD5 |
73d274db1b2cbb3c41f6fae1a5cde951
|
|
| BLAKE2b-256 |
55f68a116cdf76be40ccf952eff61ca48906c6d5c54f1357aee21cc3b2298729
|
File details
Details for the file pywebexec-1.3.4-py3-none-any.whl.
File metadata
- Download URL: pywebexec-1.3.4-py3-none-any.whl
- Upload date:
- Size: 872.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.9.21
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c1f3a4a088b6162726208210f58f71b128b4c3756f65ada0757c265d036ce9f0
|
|
| MD5 |
af011b8d30deae9c4e5c3cbe58af22a3
|
|
| BLAKE2b-256 |
1464babcd2a495c4b0ece24f768b1e3c9c53d338c25f4bd6614b44af30e6fcd3
|