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 <d.csapak@proxmox.com>
This commit is contained in:
Dominik Csapak 2017-10-27 14:13:48 +02:00 committed by Wolfgang Bumiller
parent 7f9a9a1613
commit 050b8c0247

View File

@ -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";
}