{"id":19982044,"url":"https://github.com/jiri-otoupal/abst","last_synced_at":"2025-08-18T16:04:46.231Z","repository":{"id":58797789,"uuid":"533828456","full_name":"jiri-otoupal/abst","owner":"jiri-otoupal","description":"Manage your bastion sessions automatically, and simplify your connection to k8s cluster","archived":false,"fork":false,"pushed_at":"2025-04-19T10:28:19.000Z","size":325,"stargazers_count":7,"open_issues_count":1,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-07-28T21:59:31.840Z","etag":null,"topics":["bastion","cli","kubernetes","kubernetes-cluster","kubernetes-pod","kubernetes-pods","oci","oracle","oracle-cloud","oracle-cloud-infrastructure","python","ssh","ssh-tunnel"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jiri-otoupal.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"github":"jiri-otoupal"}},"created_at":"2022-09-07T15:33:51.000Z","updated_at":"2025-04-19T10:28:22.000Z","dependencies_parsed_at":"2023-11-21T12:29:01.932Z","dependency_job_id":"350917a4-03a8-4a59-99bb-4e16d9382d40","html_url":"https://github.com/jiri-otoupal/abst","commit_stats":{"total_commits":104,"total_committers":4,"mean_commits":26.0,"dds":0.4807692307692307,"last_synced_commit":"1a45b19f8397a93d6b9ddb23295e900c45595f26"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/jiri-otoupal/abst","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jiri-otoupal%2Fabst","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jiri-otoupal%2Fabst/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jiri-otoupal%2Fabst/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jiri-otoupal%2Fabst/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jiri-otoupal","download_url":"https://codeload.github.com/jiri-otoupal/abst/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jiri-otoupal%2Fabst/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":271019390,"owners_count":24685678,"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","status":"online","status_checked_at":"2025-08-18T02:00:08.743Z","response_time":89,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["bastion","cli","kubernetes","kubernetes-cluster","kubernetes-pod","kubernetes-pods","oci","oracle","oracle-cloud","oracle-cloud-infrastructure","python","ssh","ssh-tunnel"],"created_at":"2024-11-13T04:08:42.463Z","updated_at":"2025-08-18T16:04:46.186Z","avatar_url":"https://github.com/jiri-otoupal.png","language":"Python","funding_links":["https://github.com/sponsors/jiri-otoupal","https://www.buymeacoffee.com/jiriotoupal"],"categories":[],"sub_categories":[],"readme":"# Auto Bastion\n\nManage your bastion sessions automatically without\npain of creating them by clicking and copy pasting commands\n\n[![image](https://img.shields.io/pypi/v/abst.svg)](https://pypi.org/project/abst/)\n[![PyPI - Python Version](https://img.shields.io/pypi/pyversions/abst)](https://pypi.org/project/abst/)\n[![Downloads](https://pepy.tech/badge/abst)](https://pepy.tech/project/abst)\n\n### Supported\n\n#### OS\n\nNo specific requirements here, whatever runs Python\n\n#### Cloud Providers\n\n* **Oracle Cloud**\n\n## Requirements\n\n### Python\n\n* 3.7+\n\n#### Configuration of OCI SDK\n\n* Add key in your Oracle cloud profile\n* Generate new key\n* Copy configuration file generated in your profile to `~/.oci/config`\n* Replace path of your `*.pem` key on line with **#TODO**\n\n## Installing\n\n### MacOS\n\nOn most MacOS machines there is `pip3` instead of `pip` **use pip3 for install**\n\nInstall and update using [pip](https://pip.pypa.io/en/stable/quickstart/):\n\n```bash\npip install abst\n\nor\n\npip3 install abst\n```\n\n## How to set up\n\n* Use `abst ctx fill {context}` to fill your credentials for usage, you can find all the\n  credentials on\n  cloud provider site, leave context empty if you want to fill default\n* Use `abst ctx generate {context}` to generate default config for context, leave context empty if you\n  want to generate to\n  default\n\n## Usage\n\n###### Both commands do automatic reconnect on idle SSH Tunnel termination\n\n* `abst create forward/managed {context}` for automatic Bastion session creation once\n  deleted, will keep your,\n  leave context empty if you want to use default\n  connection alive till you kill this script\n* `abst do forward/managed {context}` alias for `abst create`\n* `abst clean` for removal all the saved credentials\n* `abst use {context}` for using different config that you had filled, `default` is the default\n  context in `creds.json`\n* Use `abst ctx locate {context}` to locate your configs, leave context empty if you want to locate\n  default\n\n### Context commands\n\n* `abst ctx list` to list contexts\n* `abst ctx upgrade \u003ccontext-name\u003e` to upgrade context you can use `--all` flag to upgrade all contexts\n* `abst ctx locate \u003ccontext-name\u003e` to get a full path of context\n* `abst ctx share \u003ccontext-name\u003e` to copy context contents into clipboard and display it, you can use `--raw` to just\n  get json\n* `abst ctx paste \u003ccontext-name\u003e` to paste contents into context file provided from name\n\n### Session commands\n\n* `abst ssh` facilitates selecting an instance to connect to. The optional `port` argument can be specified partially; a\n  connection is established if only one match is found. Use `-n \u003ccontext-name\u003e` to filter a connection, where the name\n  can be a partial match. `abst` employs the `in` operator for searching and proceeds with SSH if a single matching\n  instance exists.\n\n### Parallel execution\n\nIf you are more demanding and need to have connection to your SSH Tunnels ready at all times\nyou can use parallel executed Bastions that currently work for full-auto forwarded setting\n\nChange local port in the setting to port that is unique to other configs, and it will be running on\nall the added ports\nUntil you kill the `abst` command, it will automatically remove all generated Bastion sessions by\nthis program\n\n* `abst parallel add {context}` will add context from your `context folder` to stack that will be\n  executed\n* `abst parallel remove {context}` will remove context from your `context folder` to stack that\n  will be executed\n* `abst parallel run {context}` will run all the stacked contexts\n* `abst parallel display` will display current stacked contexts\n* `abst parallel list` will list all sets with contexts\n\n### Helm registry commands\n\n* `abst helm login` will log you in with credentials set in config.json, you set these credentials\n  when running this command first time. Edit with flag --edit 1-n number is the index of credential\n  in list\n* `abst helm push \u003cchart-name\u003e` will push to specified remote branch, if more credentials preset it\n  will let you pick which one to use\n\n### Kubectl commands\n\n* `abst pod ssh \u003cpart of name\u003e` will ssh into pod with similar name, if multiple found it will display select\n* `abst cp secret secret_namespace target_namespace source_namespace(optional)` this will copy\n  secret to target namespace, without providing source namespace it will use current as a source\n\n\u003chr\u003e\nDid I made your life less painful ? \n\u003cbr\u003e\n\u003cbr\u003e\nSupport my coffee addiction ;)\n\u003cbr\u003e\n\u003ca href=\"https://www.buymeacoffee.com/jiriotoupal\" target=\"_blank\"\u003e\u003cimg src=\"https://www.buymeacoffee.com/assets/img/custom_images/orange_img.png\" alt=\"Buy me a Coffee\" style=\"height: 41px !important;width: 174px !important;box-shadow: 0px 3px 2px 0px rgba(190, 190, 190, 0.5) !important;-webkit-box-shadow: 0px 3px 2px 0px rgba(190, 190, 190, 0.5) !important;\" \u003e\u003c/a\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjiri-otoupal%2Fabst","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjiri-otoupal%2Fabst","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjiri-otoupal%2Fabst/lists"}