{"id":25000872,"url":"https://github.com/schaffung/odincontrol","last_synced_at":"2025-03-29T19:14:01.927Z","repository":{"id":54138788,"uuid":"340135851","full_name":"schaffung/odinControl","owner":"schaffung","description":"A lightweight remote command executor","archived":false,"fork":false,"pushed_at":"2021-07-02T17:42:30.000Z","size":72,"stargazers_count":0,"open_issues_count":8,"forks_count":2,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-02-04T19:51:31.741Z","etag":null,"topics":["command-line","deployment-automation","remote-execution"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/schaffung.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}},"created_at":"2021-02-18T18:07:18.000Z","updated_at":"2021-07-02T17:43:12.000Z","dependencies_parsed_at":"2022-08-13T07:20:45.940Z","dependency_job_id":null,"html_url":"https://github.com/schaffung/odinControl","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/schaffung%2FodinControl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/schaffung%2FodinControl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/schaffung%2FodinControl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/schaffung%2FodinControl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/schaffung","download_url":"https://codeload.github.com/schaffung/odinControl/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246230541,"owners_count":20744349,"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":["command-line","deployment-automation","remote-execution"],"created_at":"2025-02-04T19:51:24.134Z","updated_at":"2025-03-29T19:14:01.904Z","avatar_url":"https://github.com/schaffung.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# odinControl\nA remote command executor\n\n## Why do we need a remote command executor\nWell it's an age old requirement. You have X servers and you want to configure them\nall without actually going over to each of those servers and doing the operation \nagain and again.\n\nOne could leverage BASH for doing the same ?\nWell technically you can. Create a bash script, then leverage the use of ssh to\nremotely execute that BASH script across the servers. ( Actually sounds like a \nchallenge, maybe one should take a look into it..). But then comes the \nquestion of user friendliness.\n\nIs odinControl user friendly?\nYou tell me. If it isn't, maybe the best way is to either open a BUG or request \nsome new feature.\n\n## Wanna quickly try out odin?\n\nCreate a virtualenv\n\n```console\n[user@sample odinControl]$ virtualenv v1\n----some output\n```\n\nActivate the virtual env\n\n```console\n[user@sample odinControl]$ source v1/bin/activate\n```\n\nInstall the requirements for odin\n\n```console\n[user@sample odinControl]$ pip3 instal -r requirements.txt\n```\n\nSet up passwordless ssh with a remote server. Currently the support is only\nfor root user but this is to be changed to be a configurable model.\n\n```console\n[user@sample odinControl]$ ssh-copy-id root@xx.yy.zz.ll\n```\n\nEdit the example to reflect the server you've just set-up for the passwordless\nssh. As shown below\n\n\n```python\nfrom odin import Odin\n\nif __name__ == \"__main__\":\n    server_list = [\"xx.yy.zz.ll\"] # The ip address change \u003c-----\n    odc = Odin(server_list)\n    odc.establish_connection()\n    print(odc.execute_command(\"echo sample_value\", server_list[0]))\n    print(odc.execute_command(\"date\", server_list[0]))\n    odc.deconstruct_connection()\n```\n\nRun the example code.\n\n```console\n[user@sample odinControl]$ python3 example.py\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fschaffung%2Fodincontrol","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fschaffung%2Fodincontrol","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fschaffung%2Fodincontrol/lists"}