From 65213b67664166a8f105e78a96cf2ce3c2bdb335 Mon Sep 17 00:00:00 2001 From: Tim Marx Date: Tue, 9 Oct 2018 13:34:14 +0200 Subject: [PATCH] close #1940: pct console: added ability to specify escape sequence added clarification about behavior when passing -1 to escapechar restored former behavior in other uses of get_console_command added meaningful tag to commit message Signed-off-by: Tim Marx --- src/PVE/API2/LXC.pm | 4 ++-- src/PVE/CLI/pct.pm | 9 ++++++++- src/PVE/LXC.pm | 9 ++++++--- 3 files changed, 16 insertions(+), 6 deletions(-) diff --git a/src/PVE/API2/LXC.pm b/src/PVE/API2/LXC.pm index cbcc393..6b3395b 100644 --- a/src/PVE/API2/LXC.pm +++ b/src/PVE/API2/LXC.pm @@ -733,7 +733,7 @@ __PACKAGE__->register_method ({ ['/usr/bin/ssh', '-e', 'none', '-t', $remip] : []; my $conf = PVE::LXC::Config->load_config($vmid, $node); - my $concmd = PVE::LXC::get_console_command($vmid, $conf, 1); + my $concmd = PVE::LXC::get_console_command($vmid, $conf, -1); my $shcmd = [ '/usr/bin/dtach', '-A', "/var/run/dtach/vzctlconsole$vmid", @@ -836,7 +836,7 @@ __PACKAGE__->register_method ({ ['/usr/bin/ssh', '-e', 'none', '-t', $remip, '--'] : []; my $conf = PVE::LXC::Config->load_config($vmid, $node); - my $concmd = PVE::LXC::get_console_command($vmid, $conf, 1); + my $concmd = PVE::LXC::get_console_command($vmid, $conf, -1); my $shcmd = [ '/usr/bin/dtach', '-A', "/var/run/dtach/vzctlconsole$vmid", diff --git a/src/PVE/CLI/pct.pm b/src/PVE/CLI/pct.pm index 6296d6f..9d3a230 100755 --- a/src/PVE/CLI/pct.pm +++ b/src/PVE/CLI/pct.pm @@ -119,6 +119,13 @@ __PACKAGE__->register_method ({ additionalProperties => 0, properties => { vmid => get_standard_option('pve-vmid', { completion => \&PVE::LXC::complete_ctid_running }), + escape => { + description => "Escape sequence prefix. For example to use as the escape sequence pass '^b'.", + default => '^a', + type => 'string', + pattern => '\^?[a-z]', + optional => 1, + }, }, }, returns => { type => 'null' }, @@ -129,7 +136,7 @@ __PACKAGE__->register_method ({ # test if container exists on this node my $conf = PVE::LXC::Config->load_config($param->{vmid}); - my $cmd = PVE::LXC::get_console_command($param->{vmid}, $conf); + my $cmd = PVE::LXC::get_console_command($param->{vmid}, $conf, $param->{escape}); exec(@$cmd); }}); diff --git a/src/PVE/LXC.pm b/src/PVE/LXC.pm index 89f289e..a2a2c54 100644 --- a/src/PVE/LXC.pm +++ b/src/PVE/LXC.pm @@ -664,17 +664,20 @@ sub verify_searchdomain_list { } sub get_console_command { - my ($vmid, $conf, $noescapechar) = @_; + my ($vmid, $conf, $escapechar) = @_; + + # '-1' as $escapechar disables keyboard escape sequence + # any other passed char (a-z) will result in my $cmode = PVE::LXC::Config->get_cmode($conf); my $cmd = []; if ($cmode eq 'console') { push @$cmd, 'lxc-console', '-n', $vmid, '-t', 0; - push @$cmd, '-e', -1 if $noescapechar; + push @$cmd, '-e', $escapechar if $escapechar; } elsif ($cmode eq 'tty') { push @$cmd, 'lxc-console', '-n', $vmid; - push @$cmd, '-e', -1 if $noescapechar; + push @$cmd, '-e', $escapechar if $escapechar; } elsif ($cmode eq 'shell') { push @$cmd, 'lxc-attach', '--clear-env', '-n', $vmid; } else { -- 2.39.2