Skip to main content

Simple Python HTTP Exec Server

Project description

Pypi version example Licence PyPI Downloads Python versions

pywebexec

Simple Python HTTP(S) API/Web Command Launcher and Terminal sharing

Install

$ pip install pywebexec

Quick start

  • share terminal
$ pywebexec shareterm
  • serve executables
    • 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

pywebexecnew11

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
  • Replay terminal history
  • 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

Sharing terminals

  • start server and share tty in one command
$ pywebexec -d ~/webshare shareterm
  • share tty with an already pywebexec server started
$ pywebexec -d ~/webshare term

if another user need to share his terminal, he need to have write permission on <dir>/.web_status directory.

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

This version

1.6.4

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.6.4.tar.gz (1.3 MB view details)

Uploaded Source

Built Distribution

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

pywebexec-1.6.4-py3-none-any.whl (1.3 MB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: pywebexec-1.6.4.tar.gz
  • Upload date:
  • Size: 1.3 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.9.21

File hashes

Hashes for pywebexec-1.6.4.tar.gz
Algorithm Hash digest
SHA256 14261130e46d6324df256316a0520eb3ccd515749cbf47bc520cf9bbc1fa0c4d
MD5 d4d2d03da0e1965d057e9e83a287933b
BLAKE2b-256 444d0d47a4df7cba6a1eaf8ad723d11e485c092b9d75c39712475afa13d91bcf

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pywebexec-1.6.4-py3-none-any.whl
  • Upload date:
  • Size: 1.3 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.9.21

File hashes

Hashes for pywebexec-1.6.4-py3-none-any.whl
Algorithm Hash digest
SHA256 3148849db3bcd1f04448ecb276975b3c0aaa9c8ba31243b7f25d9c243e926814
MD5 b59c50936de70d789be682807169ee3b
BLAKE2b-256 40b9622928d37c57288f84d7ef59436cc41a39e0af0178a365dc11d7e557f481

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