{"id":21754596,"url":"https://github.com/scottjwalter/piman","last_synced_at":"2026-05-11T07:24:38.692Z","repository":{"id":139430226,"uuid":"148348465","full_name":"ScottJWalter/piman","owner":"ScottJWalter","description":"Using Fabric to manage multiple raspberry pis.","archived":false,"fork":false,"pushed_at":"2018-10-17T18:09:09.000Z","size":311,"stargazers_count":2,"open_issues_count":2,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-21T03:14:57.516Z","etag":null,"topics":["fabric","python3","raspberry-pi"],"latest_commit_sha":null,"homepage":null,"language":null,"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/ScottJWalter.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"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}},"created_at":"2018-09-11T16:40:54.000Z","updated_at":"2022-02-15T16:49:57.000Z","dependencies_parsed_at":null,"dependency_job_id":"dbea9df8-507d-4f29-b0a0-0ecf65a4dae0","html_url":"https://github.com/ScottJWalter/piman","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/ScottJWalter/piman","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ScottJWalter%2Fpiman","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ScottJWalter%2Fpiman/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ScottJWalter%2Fpiman/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ScottJWalter%2Fpiman/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ScottJWalter","download_url":"https://codeload.github.com/ScottJWalter/piman/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ScottJWalter%2Fpiman/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274489608,"owners_count":25294931,"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-09-10T02:00:12.551Z","response_time":83,"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":["fabric","python3","raspberry-pi"],"created_at":"2024-11-26T09:14:26.449Z","updated_at":"2026-05-11T07:24:33.645Z","avatar_url":"https://github.com/ScottJWalter.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"![Fabric](./images/fabric.png)  ![](./images/plus.png) ![Raspberry Pi](./images/raspi.png)\n\n# piman\n\u003e Manage multiple raspberry pis with Python and a little help from Fabric\n\nI have several Raspberry Pis around the office, doing various things (Pihole, Picroft, etc.).\nTrying to keep them updated was tedious until I threw together a simple [Fabric][10] script that\nallows me to manage them all from a single set of commands.\n\n## Installing\n\n**NOTE:**  Installation is assumed to be on the box from which you want to manage your Pis.  \n_This is **not** installed on the Pis themselves._\n\n1.  Clone this repo\n2.  Change to the repo directory\n3.  Install dependencies via `pip`\n4.  Create and edit a file `config.json` with the names of your Pi's:\n\nOr start here ...\n\n```shell\ngit clone https://github.com/ScottJWalter/piman.git\ncd piman\npip install -r requirements.txt\nnano config.json\n```\n\n... paste the following into your editor window for `config.json` ...\n\n```shell\n{\n    'hosts': [\n        'raspberrypi',\n        'mypi'\n        ...\n    ]\n}\n```\n\n... and you're ready to go.\n\n## Usage\n\nTo get a list of available commands:\n\n```shell\ncd piman\nfab --list\n```\n\n### Per-host commands:\n\nPer-host commands require a host name passed in:\n\n```shell\ncd piman\nfab \u003ccommand\u003e \u003c-H|--host\u003e \u003chostname\u003e\n```\n\nHost names can be either the qualified name or the IP address.\n\nAvailable commands:\n\n* `ping` \u0026mdash; Pings the host\n* `reboot` \u0026mdash; Reboots the specified host\n* `update` \u0026mdash; Runs `sudo apt-get update` on the specified host\n* `update-and-upgrade` \u0026mdash; Both `update`s and `upgrade`s the specified host\n* `upgrade` \u0026mdash; Runs `sudo apt-get upgrade --yes` on the specified host\n\n### All-host commands:\n\nAll-host commands take no parameters and apply the same tasks to all known hosts:\n\n```shell\ncd piman\nfab \u003ccommand\u003e\n```\n\nAvailable commands:\n\n* `list-hosts` \u0026mdash; Returns a list of known hosts\n* `update-all` \u0026mdash; Runs `sudo apt-get update --yes` on all hosts\n* `upgrade-all` \u0026mdash; Runs `sudo apt-get upgrade --yes` onall hosts\n\n## Licensing\n\nThis software is released under the [MIT License](LICENSE.md).\n\n\n[10]: http://www.fabfile.org/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fscottjwalter%2Fpiman","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fscottjwalter%2Fpiman","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fscottjwalter%2Fpiman/lists"}