From fef162711d53d778bdd2ed235e0206bfa3366864 Mon Sep 17 00:00:00 2001 From: Lars Gebhardt-Kusche Date: Sat, 7 Mar 2026 00:45:26 +0100 Subject: [PATCH] change --- tools/pi_control/terminal_entry.sh | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/tools/pi_control/terminal_entry.sh b/tools/pi_control/terminal_entry.sh index 93ac595..38580be 100644 --- a/tools/pi_control/terminal_entry.sh +++ b/tools/pi_control/terminal_entry.sh @@ -56,17 +56,18 @@ SSH_TARGET="${USER}@${HOST}" TMUX_SESSION="${PI_CONTROL_TMUX_SESSION:-nexus}" if [[ -n "${COMMAND}" ]]; then COMMAND_B64="$(printf '%s' "${COMMAND}" | base64)" - REMOTE_CMD='CMD_B64="$0"; CMD="$(printf "%s" "$CMD_B64" | base64 -d)"; if command -v tmux >/dev/null 2>&1; then SESSION="'"${TMUX_SESSION}"'"; tmux has-session -t "$SESSION" 2>/dev/null || tmux new-session -d -s "$SESSION"; tmux send-keys -t "$SESSION" "$CMD" C-m; exec tmux attach -t "$SESSION"; else eval "$CMD"; exec /bin/bash -il; fi' + REMOTE_CMD='CMD_B64="$(cat)"; CMD="$(printf "%s" "$CMD_B64" | base64 -d)"; if command -v tmux >/dev/null 2>&1; then SESSION="'"${TMUX_SESSION}"'"; tmux has-session -t "$SESSION" 2>/dev/null || tmux new-session -d -s "$SESSION"; tmux send-keys -t "$SESSION" "$CMD" C-m; exec tmux attach -t "$SESSION"; else eval "$CMD"; exec /bin/bash -il; fi' if [[ "${AUTH_TYPE}" == "key" && -n "${KEY_PATH}" ]]; then - exec ssh "${SSH_OPTS[@]}" -i "${KEY_PATH}" -p "${PORT:-22}" -tt "${SSH_TARGET}" -- /bin/bash -lc "${REMOTE_CMD}" "${COMMAND_B64}" || \ - exec ssh "${SSH_OPTS[@]}" -i "${KEY_PATH}" -p "${PORT:-22}" -tt "${SSH_TARGET}" -- /bin/sh -lc "${REMOTE_CMD}" "${COMMAND_B64}" + printf '%s' "${COMMAND_B64}" | ssh "${SSH_OPTS[@]}" -i "${KEY_PATH}" -p "${PORT:-22}" -tt "${SSH_TARGET}" -- /bin/bash -lc "${REMOTE_CMD}" || \ + printf '%s' "${COMMAND_B64}" | ssh "${SSH_OPTS[@]}" -i "${KEY_PATH}" -p "${PORT:-22}" -tt "${SSH_TARGET}" -- /bin/sh -lc "${REMOTE_CMD}" elif [[ "${AUTH_TYPE}" == "pass" && -n "${PASSWORD}" ]]; then - exec sshpass -p "${PASSWORD}" ssh "${SSH_OPTS[@]}" -p "${PORT:-22}" -tt "${SSH_TARGET}" -- /bin/bash -lc "${REMOTE_CMD}" "${COMMAND_B64}" || \ - exec sshpass -p "${PASSWORD}" ssh "${SSH_OPTS[@]}" -p "${PORT:-22}" -tt "${SSH_TARGET}" -- /bin/sh -lc "${REMOTE_CMD}" "${COMMAND_B64}" + printf '%s' "${COMMAND_B64}" | sshpass -p "${PASSWORD}" ssh "${SSH_OPTS[@]}" -p "${PORT:-22}" -tt "${SSH_TARGET}" -- /bin/bash -lc "${REMOTE_CMD}" || \ + printf '%s' "${COMMAND_B64}" | sshpass -p "${PASSWORD}" ssh "${SSH_OPTS[@]}" -p "${PORT:-22}" -tt "${SSH_TARGET}" -- /bin/sh -lc "${REMOTE_CMD}" else - exec ssh "${SSH_OPTS[@]}" -p "${PORT:-22}" -tt "${SSH_TARGET}" -- /bin/bash -lc "${REMOTE_CMD}" "${COMMAND_B64}" || \ - exec ssh "${SSH_OPTS[@]}" -p "${PORT:-22}" -tt "${SSH_TARGET}" -- /bin/sh -lc "${REMOTE_CMD}" "${COMMAND_B64}" + printf '%s' "${COMMAND_B64}" | ssh "${SSH_OPTS[@]}" -p "${PORT:-22}" -tt "${SSH_TARGET}" -- /bin/bash -lc "${REMOTE_CMD}" || \ + printf '%s' "${COMMAND_B64}" | ssh "${SSH_OPTS[@]}" -p "${PORT:-22}" -tt "${SSH_TARGET}" -- /bin/sh -lc "${REMOTE_CMD}" fi + exit $? else REMOTE_CMD='if command -v tmux >/dev/null 2>&1; then exec tmux new -A -s "'"${TMUX_SESSION}"'"; else exec /bin/bash -il; fi' if [[ "${AUTH_TYPE}" == "key" && -n "${KEY_PATH}" ]]; then