Skip to content

Commit

Permalink
quote scp-extra-args, sftp-extra-args, ssh-common-args and ssh-extra-…
Browse files Browse the repository at this point in the history
…args when generating the command to execute
  • Loading branch information
apenella committed Mar 13, 2024
1 parent ff74d48 commit eba64fd
Show file tree
Hide file tree
Showing 4 changed files with 41 additions and 21 deletions.
18 changes: 14 additions & 4 deletions pkg/adhoc/ansibleAdhocOptions.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,11 @@ package adhoc

import (
"fmt"
"strings"

common "github.com/apenella/go-common-utils/data"
errors "github.com/apenella/go-common-utils/error"
"github.com/kballard/go-shellquote"
)

const (
Expand Down Expand Up @@ -429,22 +431,30 @@ func (o *AnsibleAdhocOptions) GenerateAnsibleAdhocOptions() ([]string, error) {

if o.SCPExtraArgs != "" {
cmd = append(cmd, SCPExtraArgsFlag)
cmd = append(cmd, fmt.Sprintf("'%s'", o.SCPExtraArgs))

splitedSCPExtraArgs := strings.Split(o.SCPExtraArgs, " ")
cmd = append(cmd, shellquote.Join(splitedSCPExtraArgs...))
}

if o.SFTPExtraArgs != "" {
cmd = append(cmd, SFTPExtraArgsFlag)
cmd = append(cmd, fmt.Sprintf("'%s'", o.SFTPExtraArgs))

splitedSFTPExtraArgs := strings.Split(o.SFTPExtraArgs, " ")
cmd = append(cmd, shellquote.Join(splitedSFTPExtraArgs...))
}

if o.SSHCommonArgs != "" {
cmd = append(cmd, SSHCommonArgsFlag)
cmd = append(cmd, fmt.Sprintf("'%s'", o.SSHCommonArgs))

splitedSSHCommonArgs := strings.Split(o.SSHCommonArgs, " ")
cmd = append(cmd, shellquote.Join(splitedSSHCommonArgs...))
}

if o.SSHExtraArgs != "" {
cmd = append(cmd, SSHExtraArgsFlag)
cmd = append(cmd, fmt.Sprintf("'%s'", o.SSHExtraArgs))

splitedSSHExtraArgs := strings.Split(o.SSHExtraArgs, " ")
cmd = append(cmd, shellquote.Join(splitedSSHExtraArgs...))
}

if o.Timeout > 0 {
Expand Down
16 changes: 8 additions & 8 deletions pkg/adhoc/ansibleAdhocOptions_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -38,10 +38,10 @@ func TestGenerateAnsibleAdhocOptions(t *testing.T) {
PlaybookDir: "playbook-dir",
Poll: 12,
PrivateKey: "pk",
SCPExtraArgs: "scp-extra-args",
SFTPExtraArgs: "sftp-extra-args",
SSHCommonArgs: "ssh-common-args",
SSHExtraArgs: "ssh-extra-args",
SCPExtraArgs: "scp-extra-args1 scp-extra-args2",
SFTPExtraArgs: "sftp-extra-args1 sftp-extra-args2",
SSHCommonArgs: "ssh-common-args1 ssh-common-args2",
SSHExtraArgs: "ssh-extra-args1 ssh-extra-args2",
SyntaxCheck: true,
Timeout: 10,
Tree: "tree",
Expand Down Expand Up @@ -96,13 +96,13 @@ func TestGenerateAnsibleAdhocOptions(t *testing.T) {
"--private-key",
"pk",
"--scp-extra-args",
"'scp-extra-args'",
"scp-extra-args1 scp-extra-args2",
"--sftp-extra-args",
"'sftp-extra-args'",
"sftp-extra-args1 sftp-extra-args2",
"--ssh-common-args",
"'ssh-common-args'",
"ssh-common-args1 ssh-common-args2",
"--ssh-extra-args",
"'ssh-extra-args'",
"ssh-extra-args1 ssh-extra-args2",
"--timeout",
"10",
"--user",
Expand Down
18 changes: 14 additions & 4 deletions pkg/playbook/ansiblePlaybookOptions.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,11 @@ package playbook

import (
"fmt"
"strings"

common "github.com/apenella/go-common-utils/data"
errors "github.com/apenella/go-common-utils/error"
"github.com/kballard/go-shellquote"
)

const (
Expand Down Expand Up @@ -412,22 +414,30 @@ func (o *AnsiblePlaybookOptions) GenerateCommandOptions() ([]string, error) {

if o.SCPExtraArgs != "" {
cmd = append(cmd, SCPExtraArgsFlag)
cmd = append(cmd, fmt.Sprintf("'%s'", o.SCPExtraArgs))

splitedSCPExtraArgs := strings.Split(o.SCPExtraArgs, " ")
cmd = append(cmd, shellquote.Join(splitedSCPExtraArgs...))
}

if o.SFTPExtraArgs != "" {
cmd = append(cmd, SFTPExtraArgsFlag)
cmd = append(cmd, fmt.Sprintf("'%s'", o.SFTPExtraArgs))

splitedSFTPExtraArgs := strings.Split(o.SFTPExtraArgs, " ")
cmd = append(cmd, shellquote.Join(splitedSFTPExtraArgs...))
}

if o.SSHCommonArgs != "" {
cmd = append(cmd, SSHCommonArgsFlag)
cmd = append(cmd, fmt.Sprintf("'%s'", o.SSHCommonArgs))

splitedSSHCommonArgs := strings.Split(o.SSHCommonArgs, " ")
cmd = append(cmd, shellquote.Join(splitedSSHCommonArgs...))
}

if o.SSHExtraArgs != "" {
cmd = append(cmd, SSHExtraArgsFlag)
cmd = append(cmd, fmt.Sprintf("'%s'", o.SSHExtraArgs))

splitedSSHExtraArgs := strings.Split(o.SSHExtraArgs, " ")
cmd = append(cmd, shellquote.Join(splitedSSHExtraArgs...))
}

if o.Timeout > 0 {
Expand Down
10 changes: 5 additions & 5 deletions pkg/playbook/ansiblePlaybookOptions_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -54,11 +54,11 @@ func TestGenerateCommandOptions(t *testing.T) {
ListTasks: true,
ModulePath: "module-path",
PrivateKey: "private-key",
SCPExtraArgs: "scp-extra-args",
SFTPExtraArgs: "sftp-extra-args",
SCPExtraArgs: "scp-extra-args1 scp-extra-args2",
SFTPExtraArgs: "sftp-extra-args1 sftp-extra-args2",
SkipTags: "skip-tags",
SSHCommonArgs: "ssh-common-args",
SSHExtraArgs: "ssh-extra-args",
SSHCommonArgs: "ssh-common-args1 ssh-common-args2",
SSHExtraArgs: "ssh-extra-args1 ssh-extra-args2",
StartAtTask: "start-at-task",
Step: true,
SyntaxCheck: true,
Expand All @@ -71,7 +71,7 @@ func TestGenerateCommandOptions(t *testing.T) {
Version: true,
},
err: nil,
options: []string{"--ask-vault-password", "--check", "--diff", "--extra-vars", "{\"extra\":\"var\"}", "--extra-vars", "@test.yml", "--flush-cache", "--force-handlers", "--forks", "10", "--inventory", "inventory", "--limit", "limit", "--list-hosts", "--list-tags", "--list-tasks", "--module-path", "module-path", "--skip-tags", "skip-tags", "--start-at-task", "start-at-task", "--step", "--syntax-check", "--tags", "tags", "--vault-id", "vault-ID", "--vault-password-file", "vault-password-file", "-vvvv", "--version", "--ask-pass", "--connection", "local", "--private-key", "private-key", "--scp-extra-args", "'scp-extra-args'", "--sftp-extra-args", "'sftp-extra-args'", "--ssh-common-args", "'ssh-common-args'", "--ssh-extra-args", "'ssh-extra-args'", "--timeout", "11", "--user", "user", "--ask-become-pass", "--become", "--become-method", "become-method", "--become-user", "become-user"},
options: []string{"--ask-vault-password", "--check", "--diff", "--extra-vars", "{\"extra\":\"var\"}", "--extra-vars", "@test.yml", "--flush-cache", "--force-handlers", "--forks", "10", "--inventory", "inventory", "--limit", "limit", "--list-hosts", "--list-tags", "--list-tasks", "--module-path", "module-path", "--skip-tags", "skip-tags", "--start-at-task", "start-at-task", "--step", "--syntax-check", "--tags", "tags", "--vault-id", "vault-ID", "--vault-password-file", "vault-password-file", "-vvvv", "--version", "--ask-pass", "--connection", "local", "--private-key", "private-key", "--scp-extra-args", "scp-extra-args1 scp-extra-args2", "--sftp-extra-args", "sftp-extra-args1 sftp-extra-args2", "--ssh-common-args", "ssh-common-args1 ssh-common-args2", "--ssh-extra-args", "ssh-extra-args1 ssh-extra-args2", "--timeout", "11", "--user", "user", "--ask-become-pass", "--become", "--become-method", "become-method", "--become-user", "become-user"},
},
}

Expand Down

0 comments on commit eba64fd

Please sign in to comment.