/shh

🤫 a friendly ssh client

Primary LanguageElixir

Shh 🤫🤫🤫

A friendly SSH client for Elixir

Features

  • Uses OTPs :ssh module
  • Concurrently run the same command on multiple hosts
  • Concurrently run multiple commands, single host

Example

iex> {:ok, conn} =
...>   Shh.connect("elixir-lang.org",
...>     port: 22,
...>     user: "José",
...>     user_dir: "./my_keys"
...>   )

iex> Shh.exec!(conn, "install_elixir.sh")
%Shh.Result{exit_status: 0, data: ["Success"]}

Inspiration

Thank you to the SSHKit.ex project for inspiring this project!

While there are many similarities between these projects, I wanted to focus on the following:

  • Concurrency as a first-class feature
  • Integration testing over unit testing
  • Room to explore new API design

Installation

If available in Hex, the package can be installed by adding shh to your list of dependencies in mix.exs:

def deps do
  [
    {:shh, "~> 0.1.0"}
  ]
end

Documentation can be generated with ExDoc and published on HexDocs. Once published, the docs can be found at https://hexdocs.pm/shh.