Skip to content

crosbymichael/slex

Repository files navigation

SLEX

Build Status

slex is a simple binary that allows you to run a command on multiple hosts via SSH. It is very similar to fabric except that it is written in Go so you don't have to have python installed on your system and you don't have to write a script or configuration files if you do not want to.

Building

To build slex you must have a working Go install then you can run:

go get -u github.com/crosbymichael/slex
slex -h
NAME:
   slex - SSH commands multiplexed

USAGE:
   slex [global options] command [command options] [arguments...]

VERSION:
   1

AUTHOR:
  @crosbymichael - <[email protected]>

COMMANDS:
   help, h  Shows a list of commands or help for one command

GLOBAL OPTIONS:
   --debug                     enable debug output for the logs
   --host value                SSH host address
   --hosts value               file containing host addresses separated by a new line
   --user value, -u value      user to execute the command as (default: "root")
   --identity value, -i value  SSH identity to use for connecting to the host
   --option value, -o value    SSH client option
   --agent, -A                 Forward authentication request to the ssh agent
   --env value, -e value       set environment variables for SSH command
   --quiet, -q                 disable output from the ssh command
   --help, -h                  show help
   --version, -v               print the version

For the list of supported SSH client option, see SSHClientOptions on config.go

Get the uptime for all servers

slex --host 192.168.1.3 --host 192.168.1.4 uptime
[192.168.1.3:22]  01:05:20 up  4:44,  0 users,  load average: 0.35, 0.39, 0.33
[192.168.1.4:22]  01:05:20 up  9:45,  0 users,  load average: 0.04, 0.07, 0.06

Run a docker container on all servers

slex --host 192.168.1.3 --host 192.168.1.4 docker run --rm busybox echo "hi slex"
[192.168.1.3:22] hi slex
[192.168.1.4:22] hi slex

Pipe scripts to all servers

echo "echo hi again" | slex --host 192.168.1.3 --host 192.168.1.4
[192.168.1.3:22] hi again
[192.168.1.4:22] hi again

License - MIT