[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