Fix issue with shell commands containing "<>" and unecessary (and poor) escaping
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
parent
0269ad3512
commit
3226be69e7
@ -41,7 +41,7 @@ func TestMultiLineConfig(t *testing.T) {
|
||||
|
||||
log.Println("-----")
|
||||
log.Println("TestMultiLineConfig(parse > string)")
|
||||
expected := "echo 'Some string with stuff'; echo '<angle brackets>'; exit 1\n"
|
||||
expected := "echo 'Some string with stuff'; echo \"<angle brackets>\"; exit 1\n"
|
||||
actual := config.Monitors[0].CommandShell
|
||||
if expected != actual {
|
||||
t.Errorf("TestMultiLineConfig(>) failed")
|
||||
|
@ -5,7 +5,7 @@ monitors:
|
||||
- name: Shell
|
||||
command_shell: >
|
||||
echo 'Some string with stuff';
|
||||
echo '<angle brackets>';
|
||||
echo "<angle brackets>";
|
||||
exit 1
|
||||
alert_down: ['log_shell']
|
||||
alert_after: 1
|
||||
|
12
util.go
12
util.go
@ -5,19 +5,9 @@ import (
|
||||
"strings"
|
||||
)
|
||||
|
||||
// escapeCommandShell accepts a command to be executed by a shell and escapes it
|
||||
func escapeCommandShell(command string) string {
|
||||
// Remove extra spaces and newlines from ends
|
||||
command = strings.TrimSpace(command)
|
||||
// TODO: Not sure if this part is actually needed. Should verify
|
||||
// Escape double quotes since this will be passed in as an argument
|
||||
command = strings.Replace(command, `"`, `\"`, -1)
|
||||
return command
|
||||
}
|
||||
|
||||
// ShellCommand takes a string and executes it as a command using `sh`
|
||||
func ShellCommand(command string) *exec.Cmd {
|
||||
shellCommand := []string{"sh", "-c", escapeCommandShell(command)}
|
||||
shellCommand := []string{"sh", "-c", strings.TrimSpace(command)}
|
||||
//log.Printf("Shell command: %v", shellCommand)
|
||||
return exec.Command(shellCommand[0], shellCommand[1:]...)
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user