[pve-devel] [PATCH manager] fix #1539: add missing shellquote for proxied commands of pvesh

Dominik Csapak d.csapak at proxmox.com
Fri Oct 27 14:13:48 CEST 2017


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 <d.csapak at proxmox.com>
---
 bin/pvesh | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/bin/pvesh b/bin/pvesh
index 936a849b..36ce7636 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";
 }
-- 
2.11.0





More information about the pve-devel mailing list