{ "info": { "author": null, "author_email": null, "bugtrack_url": null, "classifiers": [], "description": "\n=======================\nParallel SSH with Regex\n=======================\n\npypsh is a simple commandline tool to execute a command in parallel on multiple\nhosts.\n\nUnder the hoods it uses `ssh` via the `paramiko` python library.\n\nWhy `pypsh` instead of dsh?\n===========================\n\nBecause managing group files with dsh is tedious. Pypsh requires no\nconfiguration, it just works.\n\nSimilar to dsh, pypsh can be used to execute a command on multiple hosts in\nparallel. In addition it is also possible to copy a file to multiple hosts at\nonce. See below for further usage instructions.\n\nThe command or file copy operation will be executed on any host that is in the\n`known_hosts` file and matches the given regular expression.\n\nThis means in order for pypsh to know about a host it is necessary to connect\nto it at least once with plain ssh.\n\nCommand Execution\n=================\n\nTo execute a command on a group of hosts matching a given regular expression::\n\n pypsh \n\nE.g.::\n\n pypsh \"role\\d+\\.customer\\.your\\.domain\" \"uptime\"\n\nInstead of executing the commands in parallel it is also possible to execute\nthe commands one after another. To do so use::\n\n pypsh \"role\\d+\\.customer\\.your\\.domain\" --interval 0.1 cmd \"uptime\"\n\nOr to wait between the commands (which might be useful when restarting services\nlike elasticsearch that are part of a cluster)::\n\n pypsh \"role\\d+\\.customer\\.your\\.domain\" -i 60 cmd \"uptime\"\n\n`pypsh` can also read from stdin. So it is possible to pipe command into it::\n\n echo \"uptime\" | pypsh \"myhosts[0-9]\"\n\n.. note::\n\n Piping is only supported if pypsh itself only received one argument.\n Therefore it is not possible to couple it with other parameters like\n `interval`\n\nCopy file to multiple hosts\n===========================\n\nTo copy a given file to a group of hosts::\n\n pypsh \"my\\.domains\\d+\\.com\" copy /tmp/here/myfile.txt /tmp/remote/file.txt\n\nInstallation\n============\n\n``pypsh`` can be installed using ``pip``::\n\n pip install pypsh\n\nDevelopment\n===========\n\nTo work on ``pypsh`` checkout the git repository, create a\nvirtual environment and install the dependencies::\n\n git clone https://github.com/mfussenegger/pypsh.git\n cd pypsh\n mkvirtualenv pypsh\n pip install -r requirements.txt\n\nSometimes it is useful to point the ``pypsh`` command to the local development\nbranch::\n\n pip install --upgrade --force-reinstall --editable .\n\nBut usually it is sufficient to invoke it like this::\n\n python pypsh/main.py ...\n", "description_content_type": null, "docs_url": null, "download_url": null, "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": null, "keywords": null, "license": null, "maintainer": null, "maintainer_email": null, "name": "pypsh", "package_url": "https://pypi.org/project/pypsh/", "platform": null, "project_url": "https://pypi.org/project/pypsh/", "project_urls": null, "release_url": "https://pypi.org/project/pypsh/0.7.3/", "requires_dist": null, "requires_python": null, "summary": "pypsh - cli for parallel ssh command execution on all known hosts that match a", "version": "0.7.3" }, "last_serial": 1631634, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "7a1576a6068a51fbe0a1da5cd3b0852b", "sha256": "062c2b62b8d4c66b759242fa2ce97d7471c084daba42c50a39bedb07c8a9e280" }, "downloads": -1, "filename": "pypsh-0.1.0.tar.gz", "has_sig": false, "md5_digest": "7a1576a6068a51fbe0a1da5cd3b0852b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1832, "upload_time": "2013-02-12T23:10:26", "url": "https://files.pythonhosted.org/packages/5b/64/40dc8a2d82f89360a6da37e968f785b2f7309d5f08fec10a818477ecf7bb/pypsh-0.1.0.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "a606525567710ac9850278a1f7a1d93c", "sha256": "ae6ffea5c33de8a30c9368b4dc17ea7876fabf9aa4c87bbcaf374df9eaa48acb" }, "downloads": -1, "filename": "pypsh-0.2.0.tar.gz", "has_sig": false, "md5_digest": "a606525567710ac9850278a1f7a1d93c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2613, "upload_time": "2013-03-01T21:46:56", "url": "https://files.pythonhosted.org/packages/27/1e/a3133fcaf43187660bf825af81718a9b01753f94d075b9ce13d823d3b0c7/pypsh-0.2.0.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "19fc4e31d3f39f87885eb6ef962c882c", "sha256": "ae2096e24bfe0ea894bc7af735cd80626c27e86ca2b08d8daa9975418bb9da7a" }, "downloads": -1, "filename": "pypsh-0.3.0.tar.gz", "has_sig": false, "md5_digest": "19fc4e31d3f39f87885eb6ef962c882c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2619, "upload_time": "2013-03-28T21:00:20", "url": "https://files.pythonhosted.org/packages/62/ed/4580ae5cf0fb44a77f26f86b50fb766dbf77d81f6cf8322aa130ff6d8079/pypsh-0.3.0.tar.gz" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "ca476f01ebca245395b63f38743f62d0", "sha256": "54ee7c406162f4fe36dc4a302daa72cce14c4a37dcf566ad7f0ae8429a51e99b" }, "downloads": -1, "filename": "pypsh-0.4.0.tar.gz", "has_sig": false, "md5_digest": "ca476f01ebca245395b63f38743f62d0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3265, "upload_time": "2013-05-16T19:28:23", "url": "https://files.pythonhosted.org/packages/ec/32/3a55a17795327436e0bd1267313cd1a44af486d83915127c3e10b395f027/pypsh-0.4.0.tar.gz" } ], "0.5.0": [ { "comment_text": "", "digests": { "md5": "1e8db28645b5e3c5c03acbc4153d51d9", "sha256": "0bba4a4809280c62d94e61f5ea1e70165ff374525311bad79daf1b5f1d899ab9" }, "downloads": -1, "filename": "pypsh-0.5.0.tar.gz", "has_sig": false, "md5_digest": "1e8db28645b5e3c5c03acbc4153d51d9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3310, "upload_time": "2013-06-24T18:30:13", "url": "https://files.pythonhosted.org/packages/62/b4/8b5061536080aca6dad3db8ef90678e912633b69940db5f278a85325802d/pypsh-0.5.0.tar.gz" } ], "0.6.0": [ { "comment_text": "", "digests": { "md5": "659408e2215f54d769de921039b6aeb1", "sha256": "cd722d4c16ffe6218c267f3098738fb81172147019a88af0ff0a0f88055d7ed1" }, "downloads": -1, "filename": "pypsh-0.6.0.tar.gz", "has_sig": false, "md5_digest": "659408e2215f54d769de921039b6aeb1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3775, "upload_time": "2013-06-24T18:56:50", "url": "https://files.pythonhosted.org/packages/fb/d8/b4f14185196a7c3f212532d7d503660ef14994f88f85f074d25b7aad2709/pypsh-0.6.0.tar.gz" } ], "0.7.0": [ { "comment_text": "", "digests": { "md5": "365d0c5edf04b4a3ab187d5912c55cca", "sha256": "30d73d346cd7ab6fd57396b304ac5c337ae45795eda526282316084e9491f7d1" }, "downloads": -1, "filename": "pypsh-0.7.0.tar.gz", "has_sig": false, "md5_digest": "365d0c5edf04b4a3ab187d5912c55cca", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4962, "upload_time": "2014-03-14T19:01:14", "url": "https://files.pythonhosted.org/packages/43/53/1adf5cdd08ffc0ce586dd4b66c3fc0833ca42f865419aefcdcb2cf42ff11/pypsh-0.7.0.tar.gz" } ], "0.7.1": [ { "comment_text": "", "digests": { "md5": "35f81a22c1c0f832f730dd7407b61273", "sha256": "eec25394f8faff930bf2beb18b3cdc0df622198718a4192a0ff20b2703bcd541" }, "downloads": -1, "filename": "pypsh-0.7.1.tar.gz", "has_sig": false, "md5_digest": "35f81a22c1c0f832f730dd7407b61273", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4962, "upload_time": "2014-03-14T19:17:08", "url": "https://files.pythonhosted.org/packages/95/ea/50ecb0c5e99af0ea93395ca2d533f73f90bb8409a585829b9f7925432771/pypsh-0.7.1.tar.gz" } ], "0.7.2": [ { "comment_text": "", "digests": { "md5": "43032f053d0838f2c1f34c5df8e69355", "sha256": "a60bb13dc30553f996b22bde1193144516a9bb6c36af2a5fb0ff085e80510c1d" }, "downloads": -1, "filename": "pypsh-0.7.2-py3-none-any.whl", "has_sig": false, "md5_digest": "43032f053d0838f2c1f34c5df8e69355", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7918, "upload_time": "2014-05-01T20:52:34", "url": "https://files.pythonhosted.org/packages/d5/49/dfb502050f4e1eb959424ee148d0eb9dff7b6b50db4c4176d0dfcbe46c33/pypsh-0.7.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3a8272af679456af7bdc36f3665c2400", "sha256": "900b7ba5f83f08be4c7008a64dbc6105aed3cc3df9a33d62aa9ccb3894abab6f" }, "downloads": -1, "filename": "pypsh-0.7.2.tar.gz", "has_sig": false, "md5_digest": "3a8272af679456af7bdc36f3665c2400", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5404, "upload_time": "2014-05-01T20:52:23", "url": "https://files.pythonhosted.org/packages/79/66/982e66e67f7b90e093f122e7d8f968b862b284be75cccdd438e3e040bb72/pypsh-0.7.2.tar.gz" } ], "0.7.3": [ { "comment_text": "", "digests": { "md5": "e689041210e477973bc781732b6223ff", "sha256": "26c06231988b1d707f5e2c9d10074fa3d69f8f1e15ef514026d137403d4567ac" }, "downloads": -1, "filename": "pypsh-0.7.3.tar.gz", "has_sig": false, "md5_digest": "e689041210e477973bc781732b6223ff", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5513, "upload_time": "2015-07-13T18:35:35", "url": "https://files.pythonhosted.org/packages/27/17/0f8666fe93e4fc9a91b786cf374b7e94b081f543624921d019d66b69afb3/pypsh-0.7.3.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "e689041210e477973bc781732b6223ff", "sha256": "26c06231988b1d707f5e2c9d10074fa3d69f8f1e15ef514026d137403d4567ac" }, "downloads": -1, "filename": "pypsh-0.7.3.tar.gz", "has_sig": false, "md5_digest": "e689041210e477973bc781732b6223ff", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5513, "upload_time": "2015-07-13T18:35:35", "url": "https://files.pythonhosted.org/packages/27/17/0f8666fe93e4fc9a91b786cf374b7e94b081f543624921d019d66b69afb3/pypsh-0.7.3.tar.gz" } ] }