{"id":15009921,"url":"https://github.com/wojtekwanczyk/easy_manage","last_synced_at":"2026-01-19T10:33:56.020Z","repository":{"id":57425154,"uuid":"180208866","full_name":"wojtekwanczyk/easy_manage","owner":"wojtekwanczyk","description":"Easy remote server management","archived":false,"fork":false,"pushed_at":"2020-01-04T21:53:03.000Z","size":421,"stargazers_count":1,"open_issues_count":23,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-10T19:54:08.878Z","etag":null,"topics":["in-band","ipmi","out-of-band","python","python-3","python3","redfish","ssh"],"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/wojtekwanczyk.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":"2019-04-08T18:25:32.000Z","updated_at":"2020-03-15T12:36:47.000Z","dependencies_parsed_at":"2022-09-13T15:21:30.559Z","dependency_job_id":null,"html_url":"https://github.com/wojtekwanczyk/easy_manage","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wojtekwanczyk%2Feasy_manage","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wojtekwanczyk%2Feasy_manage/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wojtekwanczyk%2Feasy_manage/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wojtekwanczyk%2Feasy_manage/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/wojtekwanczyk","download_url":"https://codeload.github.com/wojtekwanczyk/easy_manage/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247276188,"owners_count":20912288,"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":["in-band","ipmi","out-of-band","python","python-3","python3","redfish","ssh"],"created_at":"2024-09-24T19:29:08.518Z","updated_at":"2026-01-19T10:33:55.991Z","avatar_url":"https://github.com/wojtekwanczyk.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# easy-manage :fish:\n\nThis python package has been created to facilitate remote server management. \nIt is focused on out-of-band management through IPMI and Redefish standards, however, \nit is possible to perform in-band management with it.\n\nThe reason of creation of such package is need to unify server management regardless of\nstandard or protocol we use below. Easy-manage delivers unified management interface. \n\n\nEasy-manage is able to connet either Network Interface Card assigned to BMC or whole system.\nYou can give multiple IP addresses to ControllerFactory and it will try to connect to all of them.\nExample config:\n\n```\nfrom easy_manage.tools import Protocol\nfrom easy_manage import Credentials\n\nbmc_credentials = Credentials('username', 'password')\nsystem_credentials = Credentials('username2', 'password2')\n\nconfig = {\n    Protocol.REDFISH: {\n        'address': bmc_ip_address,\n        'credentials': bmc_credentials\n    },\n    Protocol.IPMI: {\n        'address': bmc_ip_address,\n        'credentials': bmc_credentials\n    },\n    Protocol.BASH: {\n        'address': system_ip_address,\n        'credentials': system_credentials\n    },\n}\n```\n\nAbove configuration will enable user to connect to device with all three accessible protocols. \nTo create abstract controller over theses interfaces, we need to use ControllerFactory\n\n```\ncontroller = ControllerFactory.get_controller(config)\n```\n\nNow it is ready to use.\n\n```\n# See all available system methods\nprint(ControllerFactory.get_methods(controller.system))\n\n# See all available chassis methods\nprint(ControllerFactory.get_methods(controller.chassis))\n\n# Test simple abstract methods\nprint(controller.chassis.get_power_state())\nprint(controller.system.get_led_state())\ncontroller.system.power_on()\n```\n\nConnector depending on its configuration is able to aggregate up to three components:\n - System\n - Chassis\n - Shell\n\nYou can get bulk data from every component using pre-defined methods `redings()`, `static_data()` and `raw_data()` on controller components.\n\n```\nfrom pprint import pprint\n\npprint(controller.shell.readings())\npprint(controller.system.static_data())\npprint(controller.chassis.raw_data())\n```\n\nWhat is important, you can invoke methods through any connected component interface by referencing it explicitly. Above calls could be transformed to:\n\n```\nfrom pprint import pprint\n\npprint(controller.components['shell']['bash'].readings())\npprint(controller.components['system']['redfish'].static_data())\npprint(controller.components['chassis']['redfish'].raw_data())\n\n# PowerShell is not supported yet\n#pprint(controller.components['shell']['power_shell'].readings())\npprint(controller.components['system']['ipmi'].static_data())\npprint(controller.components['system']['ipmi'].static_data())\n```\n\n\nSee more examples in demo/demo.py\n\nPackage has been designed to provide command line tool but it has not been binded with implemented functionalities yet.\n\nPlease note that this package came into existence as a part of bachelor's thesis and has not \nbeen commercially used and thus may be buggy.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwojtekwanczyk%2Feasy_manage","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwojtekwanczyk%2Feasy_manage","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwojtekwanczyk%2Feasy_manage/lists"}