Metadata-Version: 2.1
Name: picsh
Version: 0.2
Summary: Parallel Interactive Cluster Shell, for rapid ad-hoc cluster ops
Author-email: Ran Dugal <opensource@clusterdyne.com>
License: AGPL3
Project-URL: Homepage, https://github.com/carlsborg/picsh
Project-URL: Issues, https://github.com/carlsborg/picsh/issues
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: GNU Affero General Public License v3
Classifier: Operating System :: OS Independent
Classifier: Topic :: System :: Distributed Computing
Classifier: Topic :: System :: System Shells
Classifier: Topic :: System :: Systems Administration
Classifier: Topic :: System :: Clustering
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Console
Classifier: Environment :: Console :: Curses
Classifier: Operating System :: POSIX
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: System Administrators
Classifier: Intended Audience :: Information Technology
Classifier: Natural Language :: English
Requires-Python: >=3.6
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: asyncssh
Requires-Dist: urwid
Requires-Dist: pyyaml
Requires-Dist: colorama


picsh
=====

Parallel Interactive Cluster Shell, for rapid ad-hoc cluster ops. 

#### Requirements

* Tested on Linux only (Fedora 35, Amazon Linux 2, Ubuntu 18)
* Tested with Python 3.6 and up

#### Features


* Fast interactive shells (re-uses the ssh session)
* Stateful ($cd /var/log followed by $pwd gives you /var/log)
* Ssh to a single node to run full screen curses apps like top
* Browse receive buffers per node
* Keyboard and mouse driven
* Works over ssh so you can put this on a jump host


#### Demo

![picsh demo](https://github.com/carlsborg/carlsborg_media_assets/blob/main/picsh-demo3.gif?raw=true)


#### Setup

* Create a cluster yaml and put it in ~.picsh/cluster_name.yaml. 

Example:  

$ cat .picsh/slurm-dev.yaml

``` 
cluster_name: slurm-dev
login_user: ec2-user
ssh_key_path: /home/ec2-user/.keys/pcluster.pem
nodes:
  - ip: "10.0.27.155"
  - ip: "10.0.25.13"
  - ip: "10.0.23.208"
  - ip: "10.0.31.113"
  - ip: "10.0.18.254"
```


