#!/bin/bash print_usage() { cat >&2 <<USAGE Usage: $0 vmname Connects to another VM console using the admin.vm.Console RPC service. USAGE } if [ $# -lt 1 ] ; then print_usage exit 1 fi QREXEC_REQUESTED_TARGET="$1" qrexec_console() { QREXEC_REQUESTED_TARGET="$1" qrexec-client-vm "$QREXEC_REQUESTED_TARGET" admin.vm.Console # exit code 200 is flock exit code in admin.vm.Console exit_code=$? if [ $exit_code -gt 0 ]; then if [ $exit_code -ne 200 ]; then printf "Cannot connect to %s" "$QREXEC_REQUESTED_TARGET" else printf "A qube is already connected to %s" "$QREXEC_REQUESTED_TARGET" fi exit 1 fi } export -f qrexec_console printf "Use '^]' to exit remote console\n" socat file:/dev/tty,rawer,escape=0x1d EXEC:"/bin/bash -c \'qrexec_console $QREXEC_REQUESTED_TARGET 2>/dev/null\'" printf '\n'