From a83717b7054482edb25d2b8190e5ded59f0c9547 Mon Sep 17 00:00:00 2001 From: Dominik Csapak Date: Fri, 27 Oct 2017 14:13:48 +0200 Subject: [PATCH] fix #1539: add missing shellquote for proxied commands of pvesh if we do not do this, passing arguments with spaces (e.g., pvesh set YYY --param "one word") leads to ssh calls like this: ssh REMOTE pvesh set YYY --param one word which cannot be parsed correctly Signed-off-by: Dominik Csapak --- bin/pvesh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/bin/pvesh b/bin/pvesh index 6f7687ef..dd876c26 100755 --- a/bin/pvesh +++ b/bin/pvesh @@ -10,6 +10,7 @@ use File::Basename; use Getopt::Long; use HTTP::Status qw(:constants :is status_message); use Text::ParseWords; +use String::ShellQuote; use PVE::JSONSchema; use PVE::SafeSyslog; use PVE::Cluster; @@ -257,8 +258,9 @@ sub check_proxyto { sub proxy_handler { my ($node, $remip, $dir, $cmd, $args) = @_; + my $cmdargs = [String::ShellQuote::shell_quote(@$args)]; my $remcmd = ['ssh', '-o', 'BatchMode=yes', "root\@$remip", - 'pvesh', '--noproxy', $cmd, $dir, @$args]; + 'pvesh', '--noproxy', $cmd, $dir, @$cmdargs]; system(@$remcmd) == 0 || die "proxy handler failed\n"; }