mirror of
https://github.com/sle118/squeezelite-esp32.git
synced 2026-03-15 06:52:44 +03:00
65 lines
1.4 KiB
Bash
65 lines
1.4 KiB
Bash
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
ENV_FILE="${LXD_ENV_FILE:-.lxd.env}"
|
|
if [[ -f "$ENV_FILE" ]]; then
|
|
# shellcheck disable=SC1090
|
|
source "$ENV_FILE"
|
|
fi
|
|
|
|
: "${LXD_HOST:?Missing LXD_HOST (set in .lxd.env or environment)}"
|
|
: "${LXD_SSH_USER:?Missing LXD_SSH_USER (set in .lxd.env or environment)}"
|
|
|
|
LXD_SSH_PORT="${LXD_SSH_PORT:-22}"
|
|
LXD_SSH_AUTH="${LXD_SSH_AUTH:-key}"
|
|
LXD_SSH_PRIVATE_KEY_PATH="${LXD_SSH_PRIVATE_KEY_PATH:-}"
|
|
LXD_WORKDIR="${LXD_WORKDIR:-}"
|
|
|
|
expand_home() {
|
|
local p="$1"
|
|
if [[ "$p" == ~* ]]; then
|
|
printf '%s\n' "${HOME}${p:1}"
|
|
else
|
|
printf '%s\n' "$p"
|
|
fi
|
|
}
|
|
|
|
ssh_opts=(
|
|
-p "$LXD_SSH_PORT"
|
|
-o BatchMode=yes
|
|
-o ConnectTimeout=10
|
|
-o StrictHostKeyChecking=accept-new
|
|
)
|
|
|
|
if [[ "$LXD_SSH_AUTH" == "key" ]]; then
|
|
: "${LXD_SSH_PRIVATE_KEY_PATH:?Missing LXD_SSH_PRIVATE_KEY_PATH for key auth}"
|
|
key_path="$(expand_home "$LXD_SSH_PRIVATE_KEY_PATH")"
|
|
ssh_opts+=( -i "$key_path" )
|
|
fi
|
|
|
|
if [[ "${1:-}" == "heartbeat" ]]; then
|
|
shift
|
|
cmd='hostname && whoami && uptime && df -h /'
|
|
else
|
|
if [[ "$#" -eq 0 ]]; then
|
|
cat <<'USAGE' >&2
|
|
Usage:
|
|
build-scripts/lxd_remote.sh heartbeat
|
|
build-scripts/lxd_remote.sh <remote command...>
|
|
|
|
Environment source: .lxd.env by default (override with LXD_ENV_FILE)
|
|
USAGE
|
|
exit 2
|
|
fi
|
|
|
|
cmd="$*"
|
|
fi
|
|
|
|
if [[ -n "$LXD_WORKDIR" ]]; then
|
|
remote_cmd="cd $LXD_WORKDIR && ( $cmd )"
|
|
else
|
|
remote_cmd="$cmd"
|
|
fi
|
|
|
|
exec ssh "${ssh_opts[@]}" "${LXD_SSH_USER}@${LXD_HOST}" "$remote_cmd"
|