From df7318a08a20135951ba45543b6e79c29d5db913 Mon Sep 17 00:00:00 2001 From: Jari Sukanen Date: Fri, 29 Apr 2016 16:07:01 +0300 Subject: [PATCH] exec plugin: allow using glob pattern in command list Allow using glob pattern in the command list in configuration. This enables for example placing all commands in a single directory and using /path/to/dir/*.sh as one of the commands to run all shell scripts in that directory. Glob patterns are applied on every run of the commands, so matching commands can be added without restarting telegraf. --- plugins/inputs/exec/exec.go | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/plugins/inputs/exec/exec.go b/plugins/inputs/exec/exec.go index d2e09ccd0..c1decd579 100644 --- a/plugins/inputs/exec/exec.go +++ b/plugins/inputs/exec/exec.go @@ -4,6 +4,7 @@ import ( "bytes" "fmt" "os/exec" + "path/filepath" "sync" "syscall" @@ -139,10 +140,19 @@ func (e *Exec) Gather(acc telegraf.Accumulator) error { e.Command = "" } - e.errChan = make(chan error, len(e.Commands)) + commands := make([]string, len(e.Commands)) + for _, pattern := range e.Commands { + matches, err := filepath.Glob(pattern) + if err != nil { + return err + } + commands = append(commands, matches...) + } - e.wg.Add(len(e.Commands)) - for _, command := range e.Commands { + e.errChan = make(chan error, len(commands)) + + e.wg.Add(len(commands)) + for _, command := range commands { go e.ProcessCommand(command, acc) } e.wg.Wait()