feat(framework): VM_PORT support in remote.sh for HAOS debug SSH [#344]
This commit is contained in:
+10
-8
@@ -14,6 +14,7 @@
|
||||
# PROX_USER (default root) SSH user on Proxmox
|
||||
# VM_IP (default 192.168.3.50) sandbox VM IP
|
||||
# VM_USER (default localuser) SSH user on the VM (has passwordless sudo)
|
||||
# VM_PORT (default 22) SSH port on the VM (e.g. 22222 for HAOS)
|
||||
#
|
||||
# USAGE:
|
||||
# remote.sh prox <cmd...> run command on Proxmox
|
||||
@@ -30,26 +31,27 @@ PROX_HOST="${PROX_HOST:-pfv-tsys5}"
|
||||
PROX_USER="${PROX_USER:-root}"
|
||||
VM_IP="${VM_IP:-192.168.3.50}"
|
||||
VM_USER="${VM_USER:-localuser}"
|
||||
VM_PORT="${VM_PORT:-22}"
|
||||
|
||||
SSH_OPTS=(-o BatchMode=yes -o StrictHostKeyChecking=accept-new -o ConnectTimeout=15)
|
||||
|
||||
die() { echo "remote.sh: $*" >&2; exit 1; }
|
||||
|
||||
_prox() { ssh "${SSH_OPTS[@]}" "${PROX_USER}@${PROX_HOST}" "$@"; }
|
||||
_vm() { ssh "${SSH_OPTS[@]}" "${VM_USER}@${VM_IP}" "$@"; }
|
||||
_vm() { ssh "${SSH_OPTS[@]}" -p "${VM_PORT}" "${VM_USER}@${VM_IP}" "$@"; }
|
||||
_vmroot() { _vm "sudo -n bash -c $(printf '%q' "$*")"; }
|
||||
|
||||
_copy() {
|
||||
# $1=target user@host, $2=local, $3=remote dest
|
||||
# $1=target user@host, $2=local, $3=remote dest, $4=ssh port
|
||||
# Use cat-over-ssh (portable: no rsync needed on either side). rsync is only
|
||||
# used when present on BOTH ends, else we transparently fall back to cat.
|
||||
local target="$1" local="$2" dest="$3"
|
||||
local target="$1" local="$2" dest="$3" port="${4:-22}"
|
||||
local userhost="${target%@*}@${target#*@}"
|
||||
if command -v rsync >/dev/null 2>&1 \
|
||||
&& ssh "${SSH_OPTS[@]}" "$userhost" 'command -v rsync' >/dev/null 2>&1; then
|
||||
rsync -az -e "ssh ${SSH_OPTS[*]}" "$local" "${userhost}:${dest}"
|
||||
&& ssh "${SSH_OPTS[@]}" -p "$port" "$userhost" 'command -v rsync' >/dev/null 2>&1; then
|
||||
rsync -az -e "ssh ${SSH_OPTS[*]} -p $port" "$local" "${userhost}:${dest}"
|
||||
else
|
||||
ssh "${SSH_OPTS[@]}" "$userhost" "cat > '$dest'" < "$local"
|
||||
ssh "${SSH_OPTS[@]}" -p "$port" "$userhost" "cat > '$dest'" < "$local"
|
||||
fi
|
||||
}
|
||||
|
||||
@@ -60,8 +62,8 @@ case "$mode" in
|
||||
vmroot) [ "$#" -ge 1 ] || die "need command"; _vmroot "$*" ;;
|
||||
prox-file) [ -f "${1:-}" ] || die "need local script file"; _prox "bash -s" < "$1" ;;
|
||||
vm-file) [ -f "${1:-}" ] || die "need local script file"; _vm "bash -s" < "$1" ;;
|
||||
vm-copy) [ -f "${1:-}" ] || die "need local file"; _copy "${VM_USER}@${VM_IP}" "$1" "${2:-}" ;;
|
||||
prox-copy) [ -f "${1:-}" ] || die "need local file"; _copy "${PROX_USER}@${PROX_HOST}" "$1" "${2:-}" ;;
|
||||
vm-copy) [ -f "${1:-}" ] || die "need local file"; _copy "${VM_USER}@${VM_IP}" "$1" "${2:-}" "${VM_PORT}" ;;
|
||||
prox-copy) [ -f "${1:-}" ] || die "need local file"; _copy "${PROX_USER}@${PROX_HOST}" "$1" "${2:-}" 22 ;;
|
||||
""|-h|--help|help) sed -n '2,40p' "${BASH_SOURCE[0]}" >&2; exit 0 ;;
|
||||
*) die "unknown mode '$mode'. Run '$0 help'." ;;
|
||||
esac
|
||||
|
||||
Reference in New Issue
Block a user