[pve-devel] [PATCH qemu-server 1/2] qm terminal: add --escape option
Wolfgang Bumiller
w.bumiller at proxmox.com
Tue Dec 12 10:36:23 CET 2017
On Tue, Dec 12, 2017 at 10:00:57AM +0100, Wolfgang Bumiller wrote:
> Signed-off-by: Wolfgang Bumiller <w.bumiller at proxmox.com>
> ---
> PVE/CLI/qm.pm | 29 ++++++++++++++++++++++++++---
> 1 file changed, 26 insertions(+), 3 deletions(-)
>
> diff --git a/PVE/CLI/qm.pm b/PVE/CLI/qm.pm
> index 90a44ef..f69ec33 100755
> --- a/PVE/CLI/qm.pm
> +++ b/PVE/CLI/qm.pm
> @@ -471,7 +471,13 @@ __PACKAGE__->register_method ({
> type => 'string',
> optional => 1,
> enum => [qw(serial0 serial1 serial2 serial3)],
> - }
> + },
> + escape => {
> + description => "Escape character.",
> + type => 'string',
> + optional => 1,
> + default => '^O',
> + },
> },
> },
> returns => { type => 'null'},
> @@ -480,6 +486,23 @@ __PACKAGE__->register_method ({
>
> my $vmid = $param->{vmid};
>
> + my $escape = $param->{escape} // '^O';
> + if ($escape =~ /^\^([\x40-\x7a])$/) {
> + # Holding ctrl is like masking out the top two bitw
> + $escape = ord(uc($1)) & 0x1F;
> + } elsif ($escape =~ /^(?:0x[0-9a-f]|[0-9]+)$/i) {
> + $escape = int($escape);
Oh actually that int() doesn't work with hex, v2 incoming...
> + } else {
> + die "invalid escape character definition: $escape\n";
> + }
> + my $escapemsg = '';
> + if ($escape) {
> + $escapemsg = sprintf(' (press Ctrl+%c to exit)', $escape+0x40);
> + $escape = sprintf(',escape=0x%x', $escape);
> + } else {
> + $escape = '';
> + }
> +
> my $conf = PVE::QemuConfig->load_config ($vmid); # check if VM exists
>
> my $iface = $param->{iface};
> @@ -501,9 +524,9 @@ __PACKAGE__->register_method ({
>
> my $socket = "/var/run/qemu-server/${vmid}.$iface";
>
> - my $cmd = "socat UNIX-CONNECT:$socket STDIO,raw,echo=0,escape=0x0f";
> + my $cmd = "socat UNIX-CONNECT:$socket STDIO,raw,echo=0$escape";
>
> - print "starting serial terminal on interface $iface (press control-O to exit)\n";
> + print "starting serial terminal on interface ${iface}${escapemsg}\n";
>
> system($cmd);
>
> --
> 2.11.0
More information about the pve-devel
mailing list