diff --git a/ssh/execute.go b/ssh/execute.go index 8565b56..6a7008b 100644 --- a/ssh/execute.go +++ b/ssh/execute.go @@ -8,6 +8,8 @@ import ( ) func (m *Manager) ExecuteEverywhere(cmd string) { + m.clientsMUX.Lock() + defer m.clientsMUX.Unlock() for host, client := range m.clients { m.execute(host, client, cmd) } diff --git a/ssh/run.go b/ssh/run.go index 54a518e..2cdf030 100644 --- a/ssh/run.go +++ b/ssh/run.go @@ -24,9 +24,13 @@ func SSHResultToStringHandler(handler SSHResultHandler) SSHResultHandler { } func (m *Manager) RunEverywhere(cmd string, handler SSHResultHandler) { + m.clientsMUX.Lock() + defer m.clientsMUX.Unlock() for host, client := range m.clients { - result, err := m.run(host, client, cmd) - handler(host, result, err) + go func() { + result, err := m.run(host, client, cmd) + handler(host, result, err) + }() } }