Project

closh

0.0
No commit activity in last 3 years
No release in over 3 years
Closh automatically bootstrap servers in the cloud to run shell commands
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

>= 3.6.0, ~> 3.6

Runtime

>= 5.1.0, ~> 5.1
>= 1.42.0, ~> 1.42
>= 4.1.0, ~> 4.1
>= 2.2.0, ~> 2.2
>= 2.1.0, ~> 2.1
 Project Readme

Cloud Shell

Gem Travis branch Gemnasium

Get a shell running in the cloud in seconds

asciicast

Installation

$ gem install closh

Alternatively you can build the gem from its repository:

$ git clone git://github.com/vinc/closh.git
$ cd closh
$ gem build closh.gemspec
$ gem install closh-0.0.1.gem

Usage

Run a command in the cloud:

$ closh -x "cut -d . -f 1 /proc/uptime"
23

More verbose:

$ closh -vx "cut -d . -f 1 /proc/uptime"
debug: uploading SSH public key to AWS ...
debug: creating server on AWS ...
debug: connecting to 'ubuntu@158.116.77.89' ...
debug: executing command 'cut -d . -f 1 /proc/uptime' ...
23
debug: destroying server ...

Pipe to stdin:

$ echo "cut -d . -f 1 /proc/uptime" | closh -x "bash -s"

Run a script remotely:

$ closh -x "bash -s" < example.sh

Skip the -x flag to keep a session alive for long running scripts.

Use -l to list sessions and -r to resume one:

$ closh -r 158.116.77.89 "tail -f screenlog.0"

More options:

$ closh -h
Usage: closh <command>

Cloud Shell v0.0.1
Options:
  -n, --dry-run       Create fake server and run locally
  -c, --config=<s>    Config file (default: ~/.closh.yml)
  -k, --key=<s>       SSH public key (default: ~/.ssh/id_rsa.pub)
  -r, --resume=<s>    Resume session
  -x, --kill          Kill session at the end
  -l, --list          List sessions
  -v, --verbose       Use verbose mode
  -h, --help          Show this message
  -V, --version       Print version and exit

Configure

Cloud Shell is based on Fog under the hood to create compute servers.

The configuration is stored in a YAML file (~/.closh.yml). It is divided in two parts: compute and server. The former being fed to Fog::Compute.new and the latter to Fog::Compute::*::Server.new.

---

compute:
  provider: AWS
  aws_access_key_id: <%= ENV["AWS_ACCESS_KEY_ID"] %>
  aws_secret_access_key: <%= ENV["AWS_SECRET_ACCESS_KEY"] %>
  region: us-east-1

server:
  image_id: ami-b04847cf # Ubuntu 18.04 LTS
  flavor_id: t2.micro
  username: ubuntu
  groups:
    - default
    - ssh

License

Copyright (c) 2017-2018 Vincent Ollivier. Released under MIT.