A friendly SSH client for Elixir
- Uses OTPs :ssh module
- Concurrently run the same command on multiple hosts
- Concurrently run multiple commands, single host
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"]}
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
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.