{"id":13501769,"url":"https://github.com/ej-f/orquesta","last_synced_at":"2025-03-29T09:31:29.333Z","repository":{"id":214667993,"uuid":"93132365","full_name":"ej-f/orquesta","owner":"ej-f","description":"An open source automation tool for remote terminal operations","archived":false,"fork":false,"pushed_at":"2017-07-08T19:07:48.000Z","size":577,"stargazers_count":14,"open_issues_count":1,"forks_count":4,"subscribers_count":5,"default_branch":"master","last_synced_at":"2024-10-31T20:41:13.435Z","etag":null,"topics":["automation","client-side","networking","productivity","pyqt","python","qt","ssh","telnet"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ej-f.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2017-06-02T06:00:46.000Z","updated_at":"2024-05-16T18:09:55.000Z","dependencies_parsed_at":"2023-12-29T19:25:51.444Z","dependency_job_id":"98f0a2f7-6e9f-45f7-b119-29f0943bc61b","html_url":"https://github.com/ej-f/orquesta","commit_stats":null,"previous_names":["ej-f/orquesta"],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ej-f%2Forquesta","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ej-f%2Forquesta/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ej-f%2Forquesta/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ej-f%2Forquesta/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ej-f","download_url":"https://codeload.github.com/ej-f/orquesta/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246167413,"owners_count":20734381,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["automation","client-side","networking","productivity","pyqt","python","qt","ssh","telnet"],"created_at":"2024-07-31T22:01:49.749Z","updated_at":"2025-03-29T09:31:29.037Z","avatar_url":"https://github.com/ej-f.png","language":"Python","funding_links":[],"categories":["Python"],"sub_categories":[],"readme":"# Orquesta - an open source automation tool for remote terminal operations\n\nAs its name implies (which means orchestra in English), this tool work as a director who indicates instructions to musicians (terminals in this context) and each piece is inside a sheet music (a script here). Well, really working with terminals is less complex, because it's possible to decompose all we require into four basic operations: select network nodes, open connections, send commands and close connections. It's the main idea behind the design.\n\n## Motivation\n\nAs usual, improvement opportunities arise when tools to work efficiently are missing and fortunately it's something that occurs very often. Keeping this in mind, I was needing a software that meets the following:\n\n\u003e Open Source, looking for collaboration and customization\n\n\u003e Provide a simple scripting interface to automate boring tasks\n\n\u003e Always save the logs, don't know when you'll need it (a golden rule, at least in my job)\n\n\n## Usage\n\n### Configuration\n\nCreate a file with extension `.cfg` in the directory `cfg` that contain for example:\n\n```ini\n[DEFAULT]\nport = 22\nprotocol = ssh\n\n[foobar]\nip = 127.0.0.1\n\n[foo]\nip = 127.0.0.1\nport = 2222 \n```\n\nThe `DEFAULT` section must contain the `port` (TCP port) and `protocol` (ssh or telnet) used by default in the nodes defined within the file. Then a section for each node and its respective  `ip` address (version 4 or 6).\n\n### Initial window\n\nWhen the program starts it shows a window like the following, here we select the logs directory, the project name and a group of nodes or terminals defined in the previous `cfg` file.\n\n![orquesta_init](https://user-images.githubusercontent.com/9748291/27972441-6625fb9e-6324-11e7-87b8-60432b4d4d9c.png)\n\n\n### Main window\n\nMainly consist in a text editor where we write the script and a list of nodes (terminals) that can be selected by clicking it or using the `sel` command (see next section).    \n\n![orquesta_main](https://user-images.githubusercontent.com/9748291/27972445-69e9c756-6324-11e7-8cd8-8a1d98a1e5ce.png)\n\n### Available commands\n\ncommand | parameters | description |\n--- | --- | --- |\n`open`  | none | open selected nodes |\n`sel`   | list of node names or `all` | select the nodes in the list | \n`set`   |  var value | create the variable $var |\n`send`  | text | send text to selected terminals|\n`gsend` | text | perform substitution of local variables  |\n`inv`   |  none | invert selection |\n`view`  |  none | view selected nodes |\n`close`    |  none  | close selected nodes |\n`mainsel`  | list of node names |  avoid the selection of nodes different to the provided in the list  |\n`#` | text | comment |\n\n\n### Keyboard shortcuts\n\nshortcut | action |\n--- | --- |\n \u003ckbd\u003eF1\u003c/kbd\u003e | Execute current line and move to the next (if no errors) |\n \u003ckbd\u003eF2\u003c/kbd\u003e | Execute current line |\n \u003ckbd\u003eCtrl\u003c/kbd\u003e + \u003ckbd\u003eShift\u003c/kbd\u003e + \u003ckbd\u003eS\u003c/kbd\u003e | Select all terminals |\n \u003ckbd\u003eCtrl\u003c/kbd\u003e + \u003ckbd\u003eShift\u003c/kbd\u003e + \u003ckbd\u003eD\u003c/kbd\u003e | Unselect all terminals |\n \u003ckbd\u003eCtrl\u003c/kbd\u003e + \u003ckbd\u003eI\u003c/kbd\u003e | Invert current selection |\n \u003ckbd\u003eCtrl\u003c/kbd\u003e + \u003ckbd\u003eO\u003c/kbd\u003e | Open selected terminals |\n \u003ckbd\u003eCtrl\u003c/kbd\u003e + \u003ckbd\u003eShift\u003c/kbd\u003e + \u003ckbd\u003eC\u003c/kbd\u003e | Close selected terminals |\n \u003ckbd\u003eCtrl\u003c/kbd\u003e + \u003ckbd\u003eAlt\u003c/kbd\u003e + \u003ckbd\u003eT\u003c/kbd\u003e | Open local terminal in current logs path \\* |\n \u003ckbd\u003eCtrl\u003c/kbd\u003e + \u003ckbd\u003eAlt\u003c/kbd\u003e + \u003ckbd\u003eF\u003c/kbd\u003e | Open file explorer in current logs path |\n \u003ckbd\u003eCtrl\u003c/kbd\u003e + \u003ckbd\u003eE\u003c/kbd\u003e | Exit application |\n \u003ckbd\u003eCtrl\u003c/kbd\u003e + \u003ckbd\u003eS\u003c/kbd\u003e | Save script |\n \u003ckbd\u003eCtrl\u003c/kbd\u003e + \u003ckbd\u003eN\u003c/kbd\u003e | New project |\n\n\\* It try to open `git-bash` as a first option, else `cmd` by default.\n\n### Using templates\n\nEach script could be saved as a template. Just select the menu, write a name and the script would be available the next time the application starts.\n\n## Installation\n\n### Windows installer\n\n**[Download here](https://github.com/ej-f/orquesta/releases)**\n\n### For developers\n\n```bash\ngit clone https://github.com/ej-f/orquesta.git\ncd orquesta\npip install -r requirements.txt\ncd orquesta\npython orquesta.py\n```\n\n#### Requirements\n\n* Python 3.4\n  * PyQt4 v4.11.3 -\u003e GUI and process\n  * pywin32 219 -\u003e windows automation\n  * cx_Freeze 4.3.4 -\u003e to create a standalone executable if is needed\n* Qt Designer 4.8.6 -\u003e GUI\n* Kitty 0.60 -\u003e client (already included in this repository)\n\n## Todo\n\n### Improvements\n\n* Documentation\n* Testing \n* Clean up code base, redefine models and data structures\n\n### Nice to have features\n\n* Expect-like functionality\n* Commands highlight\n* Select elements using glob patterns\n* Cross platform compatibility \n* Automatic script execution\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fej-f%2Forquesta","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fej-f%2Forquesta","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fej-f%2Forquesta/lists"}