{ "info": { "author": "jasonszang", "author_email": "jasonszang@126.com", "bugtrack_url": null, "classifiers": [ "Operating System :: OS Independent", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7" ], "description": "# Scriptd\n\nScriptd lets you execute a set of preconfigured scripts or executables via HTTP API, securely, without exposing terminal access, and with almost no configurations.\n\nDesigned for remote job automation when direct SSH is not desirable, Scriptd helps you deal with situations when your development server is behind firewalls or your corporation's security policy forbids direct SSH access. Write down your code updating / building / deployment commands as scripts and you are good to go with HTTP access only. And no, you are not exposing your server to code injections: only your preconfigured scripts are allowed to run.\n\n## Features\n\n- Setting up preconfigured scripts as HTTP API for remote job automation.\n- Almost zero configuration: a work directory with your scripts inside, and a secret key, that's all.\n- No terminal exposure: scriptd does not run any code or parameters from client requests, only your preconfigured scripts. No code injection.\n- Security: encryption & authentication with AES-256-GCM.\n\n## Usage\n\n### Server\n\n```\nscriptd [-h] [-H HOST] [-p PORT] [-k KEY | --key-file KEY_FILE] [-d DIR]\n\noptional arguments:\n -h, --help show this help message and exit\n -H HOST, --host HOST Host name to listen on, default: 0.0.0.0\n -p PORT, --port PORT Port to listen on, default: 8182\n -k KEY, --key KEY Authentication key, default: empty\n --key-file KEY_FILE Authentication key file. Key will be derived from its hash.\n -d DIR, --dir DIR Working directory, default: current dir\n```\n\n### Client\n\n```\nscriptc [-h] [-H HOST] [-p PORT] [-k KEY | --key-file KEY_FILE] command\n\npositional arguments:\n command Name of the script to run on server\n\noptional arguments:\n -h, --help show this help message and exit\n -H HOST, --host HOST Server ip or name, default: 127.0.0.1\n -p PORT, --port PORT Server port, default: 8182\n -k KEY, --key KEY Authentication key, default: empty\n --key-file KEY_FILE Authentication key file. Key will be derived from its hash.\n```\n\n### Example usage\n\nOn your server, put your scripts in a directory named `~/scriptd_home`. It is strongly advised that you keep this directory and any file under it accessable only to yourself.\n\nPrepare an arbitrary-sized key-file that acts as the secret key. Name it `~/scriptd_home/key` and put it on both client and server.\n\nRun `scriptd --key-file ~/scriptd_home/key -d ~/scriptd_home` to start the server.\n\nYou can now invoke scripts in `scriptd_home` remotely from clients with:\n\n```scriptc -H --key-file ```\n\n Scripts will be invoked from `~/scriptd_home` on your server. Both stdout and stderr of the invoked script will be sent to your client encrypted.\n\n### Installation\n\nTo install scriptd simply run:\n\n```bash\npip install -U scriptd \n```\n\nTo install to a Unix global python environment use \n\n```bash\nsudo -H pip install -U scriptd\n```\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/jasonszang/scriptd", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "scriptd", "package_url": "https://pypi.org/project/scriptd/", "platform": "", "project_url": "https://pypi.org/project/scriptd/", "project_urls": { "Homepage": "https://github.com/jasonszang/scriptd" }, "release_url": "https://pypi.org/project/scriptd/0.5.1/", "requires_dist": [ "cryptography (>=2.0)", "flask (>=0.12.1)", "six (>=1.9)", "typing (>=3.6.1)", "requests (>=2.0.0)" ], "requires_python": "", "summary": "Scriptd lets you execute a set of preconfigured scripts or executables via HTTP API, securely, without exposing terminal access, and with almost no configurations.", "version": "0.5.1" }, "last_serial": 4247257, "releases": { "0.5.0": [ { "comment_text": "", "digests": { "md5": "7667476519037955af4fe04f95e9bf24", "sha256": "f29b82a02028a1962aee6cfbaa3f3d4074feb53b57e7a2139cef3a7bf37a678d" }, "downloads": -1, "filename": "scriptd-0.5.0-py2-none-any.whl", "has_sig": false, "md5_digest": "7667476519037955af4fe04f95e9bf24", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 9459, "upload_time": "2018-09-04T09:04:00", "url": "https://files.pythonhosted.org/packages/ff/de/7d44dd9368788e785f8f7e3bccbc089b8bd66b8ad319cf0b7cb1ede63c48/scriptd-0.5.0-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d941aeb2de7bde46af793f84633b7c10", "sha256": "aedbec5924b1371e0b9b161c0635ae24880ded8a9b4f2e237213af86763857ef" }, "downloads": -1, "filename": "scriptd-0.5.0.tar.gz", "has_sig": false, "md5_digest": "d941aeb2de7bde46af793f84633b7c10", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7134, "upload_time": "2018-09-04T09:04:01", "url": "https://files.pythonhosted.org/packages/4f/5e/ac586d2612dc133e6ed42c24c14afbac20d6b87a05df63b94fff7a8787ce/scriptd-0.5.0.tar.gz" } ], "0.5.1": [ { "comment_text": "", "digests": { "md5": "cf37d450ccbfc5019564ef9616a784bf", "sha256": "1bc24e97596624062097336efeff83617214853817c083c444af6d994d2b4d26" }, "downloads": -1, "filename": "scriptd-0.5.1-py2-none-any.whl", "has_sig": false, "md5_digest": "cf37d450ccbfc5019564ef9616a784bf", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 9467, "upload_time": "2018-09-07T05:52:32", "url": "https://files.pythonhosted.org/packages/b1/5a/6ea2486987a0bf7b5dd33d31c8f18bd4793fc2b4440163e8968270f66ec7/scriptd-0.5.1-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e74d12f233f84664ba97aed9e6285907", "sha256": "9f70ecf936501b01bece0a1147b79357094d7760e7d105f87e1d1d6bbcca440d" }, "downloads": -1, "filename": "scriptd-0.5.1.tar.gz", "has_sig": false, "md5_digest": "e74d12f233f84664ba97aed9e6285907", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7148, "upload_time": "2018-09-07T05:52:34", "url": "https://files.pythonhosted.org/packages/e2/23/e8ce02a5c0381eaf7d4cc5e451462388d6eb98be2f094492c44bdf3c6a7a/scriptd-0.5.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "cf37d450ccbfc5019564ef9616a784bf", "sha256": "1bc24e97596624062097336efeff83617214853817c083c444af6d994d2b4d26" }, "downloads": -1, "filename": "scriptd-0.5.1-py2-none-any.whl", "has_sig": false, "md5_digest": "cf37d450ccbfc5019564ef9616a784bf", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 9467, "upload_time": "2018-09-07T05:52:32", "url": "https://files.pythonhosted.org/packages/b1/5a/6ea2486987a0bf7b5dd33d31c8f18bd4793fc2b4440163e8968270f66ec7/scriptd-0.5.1-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e74d12f233f84664ba97aed9e6285907", "sha256": "9f70ecf936501b01bece0a1147b79357094d7760e7d105f87e1d1d6bbcca440d" }, "downloads": -1, "filename": "scriptd-0.5.1.tar.gz", "has_sig": false, "md5_digest": "e74d12f233f84664ba97aed9e6285907", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7148, "upload_time": "2018-09-07T05:52:34", "url": "https://files.pythonhosted.org/packages/e2/23/e8ce02a5c0381eaf7d4cc5e451462388d6eb98be2f094492c44bdf3c6a7a/scriptd-0.5.1.tar.gz" } ] }