six-ddc / hss

An interactive parallel ssh client featuring autocomplete and asynchronous execution.
MIT License
352 stars 23 forks source link
autocompletion command-line multiple parallel pssh readline ssh ssh-client

hss

Release Build Status License: MIT

简体中文README

What's hss?

hss is an interactive ssh client for multiple servers. It will provide almost the same experience as in the bash environment. It supports:

Command is executed on all servers in parallel. Execution on one server does not need to wait for that on another server to finish before starting. So we can run a command on hundreds of servers at the same time.

A quick start

Usage: hss [-f hostfile] [-o file] [-u username] [command]...

Options:
  -f file        file with the list of hosts
  -H host        specifies a host option, support the same options as the ssh command
  -l limit       number of multiple ssh to perform at a time (default: unlimited)
  -u user        the default user name to use when connecting to the remote server
  -c opts        specify the common ssh options (i.e. '-p 22 -i identity_file')
  -o file        write remote command output to a file
  -i             force use a vi-style line editing interface
  -v             be more verbose
  -V             show program version
  -h             display this message

For more information, see https://github.com/six-ddc/hss

asciicast

How to install it?

How to use it?

The fundamental of hss is to execute the ssh command for every host, and then show the results on the terminal. So hss supports every argument supported by the ssh command. Following is an example of the hostfile:

192.168.1.1
-p 2222 root@192.168.1.2
-p 2222 -i ~/.ssh/identity_file root@192.168.1.3
-p 2222 -oConnectTimeout=3 root@192.168.1.4

Connect to servers:

# Specify the hostfile directly
hss -f hostfile

# Or pass servers in arguments
hss -H '192.168.1.1' -H '-p 2222 root@192.168.1.2' -H '-p 2222 -i ~/.ssh/identity_file root@192.168.1.3' -H '-p 2222 -oConnectTimeout=3 root@192.168.1.4'

Passthrough of ssh arguments are supported. For example, by specify -c '-oConnectTimeout=3', sessions without a timeout configured will set its timeout on this argument.

Usage of readline

The interactive input is implemented on libreadline, supporting command and path completion from remote, history storage and searching, moving around, etc. (please refer to readline for more)

Goals of the future versions