ads
This commit is contained in:
@@ -56,28 +56,30 @@ SSH_TARGET="${USER}@${HOST}"
|
|||||||
TMUX_SESSION="${PI_CONTROL_TMUX_SESSION:-nexus}"
|
TMUX_SESSION="${PI_CONTROL_TMUX_SESSION:-nexus}"
|
||||||
if [[ -n "${COMMAND}" ]]; then
|
if [[ -n "${COMMAND}" ]]; then
|
||||||
COMMAND_B64="$(printf '%s' "${COMMAND}" | base64)"
|
COMMAND_B64="$(printf '%s' "${COMMAND}" | base64)"
|
||||||
REMOTE_CMD='CMD_B64="$1"; 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='${COMMAND_B64}'; 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_Q=$(printf "%s" "$REMOTE_CMD" | sed "s/'/'\\\\''/g")
|
||||||
if [[ "${AUTH_TYPE}" == "key" && -n "${KEY_PATH}" ]]; then
|
if [[ "${AUTH_TYPE}" == "key" && -n "${KEY_PATH}" ]]; then
|
||||||
ssh "${SSH_OPTS[@]}" -i "${KEY_PATH}" -p "${PORT:-22}" -tt "${SSH_TARGET}" -- /bin/bash -lc "${REMOTE_CMD}" _ "${COMMAND_B64}" || \
|
ssh "${SSH_OPTS[@]}" -i "${KEY_PATH}" -p "${PORT:-22}" -tt "${SSH_TARGET}" -- /bin/bash -lc "'${REMOTE_CMD_Q}'" || \
|
||||||
ssh "${SSH_OPTS[@]}" -i "${KEY_PATH}" -p "${PORT:-22}" -tt "${SSH_TARGET}" -- /bin/sh -lc "${REMOTE_CMD}" _ "${COMMAND_B64}"
|
ssh "${SSH_OPTS[@]}" -i "${KEY_PATH}" -p "${PORT:-22}" -tt "${SSH_TARGET}" -- /bin/sh -lc "'${REMOTE_CMD_Q}'"
|
||||||
elif [[ "${AUTH_TYPE}" == "pass" && -n "${PASSWORD}" ]]; then
|
elif [[ "${AUTH_TYPE}" == "pass" && -n "${PASSWORD}" ]]; then
|
||||||
sshpass -p "${PASSWORD}" ssh "${SSH_OPTS[@]}" -p "${PORT:-22}" -tt "${SSH_TARGET}" -- /bin/bash -lc "${REMOTE_CMD}" _ "${COMMAND_B64}" || \
|
sshpass -p "${PASSWORD}" ssh "${SSH_OPTS[@]}" -p "${PORT:-22}" -tt "${SSH_TARGET}" -- /bin/bash -lc "'${REMOTE_CMD_Q}'" || \
|
||||||
sshpass -p "${PASSWORD}" ssh "${SSH_OPTS[@]}" -p "${PORT:-22}" -tt "${SSH_TARGET}" -- /bin/sh -lc "${REMOTE_CMD}" _ "${COMMAND_B64}"
|
sshpass -p "${PASSWORD}" ssh "${SSH_OPTS[@]}" -p "${PORT:-22}" -tt "${SSH_TARGET}" -- /bin/sh -lc "'${REMOTE_CMD_Q}'"
|
||||||
else
|
else
|
||||||
ssh "${SSH_OPTS[@]}" -p "${PORT:-22}" -tt "${SSH_TARGET}" -- /bin/bash -lc "${REMOTE_CMD}" _ "${COMMAND_B64}" || \
|
ssh "${SSH_OPTS[@]}" -p "${PORT:-22}" -tt "${SSH_TARGET}" -- /bin/bash -lc "'${REMOTE_CMD_Q}'" || \
|
||||||
ssh "${SSH_OPTS[@]}" -p "${PORT:-22}" -tt "${SSH_TARGET}" -- /bin/sh -lc "${REMOTE_CMD}" _ "${COMMAND_B64}"
|
ssh "${SSH_OPTS[@]}" -p "${PORT:-22}" -tt "${SSH_TARGET}" -- /bin/sh -lc "'${REMOTE_CMD_Q}'"
|
||||||
fi
|
fi
|
||||||
exit $?
|
exit $?
|
||||||
else
|
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'
|
REMOTE_CMD="if command -v tmux >/dev/null 2>&1; then exec tmux new -A -s \"${TMUX_SESSION}\"; else exec /bin/bash -il; fi"
|
||||||
|
REMOTE_CMD_Q=$(printf "%s" "$REMOTE_CMD" | sed "s/'/'\\\\''/g")
|
||||||
if [[ "${AUTH_TYPE}" == "key" && -n "${KEY_PATH}" ]]; then
|
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}" || \
|
exec ssh "${SSH_OPTS[@]}" -i "${KEY_PATH}" -p "${PORT:-22}" -tt "${SSH_TARGET}" -- /bin/bash -lc "'${REMOTE_CMD_Q}'" || \
|
||||||
exec ssh "${SSH_OPTS[@]}" -i "${KEY_PATH}" -p "${PORT:-22}" -tt "${SSH_TARGET}" -- /bin/sh -lc "${REMOTE_CMD}"
|
exec ssh "${SSH_OPTS[@]}" -i "${KEY_PATH}" -p "${PORT:-22}" -tt "${SSH_TARGET}" -- /bin/sh -lc "'${REMOTE_CMD_Q}'"
|
||||||
elif [[ "${AUTH_TYPE}" == "pass" && -n "${PASSWORD}" ]]; then
|
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}" || \
|
exec sshpass -p "${PASSWORD}" ssh "${SSH_OPTS[@]}" -p "${PORT:-22}" -tt "${SSH_TARGET}" -- /bin/bash -lc "'${REMOTE_CMD_Q}'" || \
|
||||||
exec sshpass -p "${PASSWORD}" ssh "${SSH_OPTS[@]}" -p "${PORT:-22}" -tt "${SSH_TARGET}" -- /bin/sh -lc "${REMOTE_CMD}"
|
exec sshpass -p "${PASSWORD}" ssh "${SSH_OPTS[@]}" -p "${PORT:-22}" -tt "${SSH_TARGET}" -- /bin/sh -lc "'${REMOTE_CMD_Q}'"
|
||||||
else
|
else
|
||||||
exec ssh "${SSH_OPTS[@]}" -p "${PORT:-22}" -tt "${SSH_TARGET}" -- /bin/bash -lc "${REMOTE_CMD}" || \
|
exec ssh "${SSH_OPTS[@]}" -p "${PORT:-22}" -tt "${SSH_TARGET}" -- /bin/bash -lc "'${REMOTE_CMD_Q}'" || \
|
||||||
exec ssh "${SSH_OPTS[@]}" -p "${PORT:-22}" -tt "${SSH_TARGET}" -- /bin/sh -lc "${REMOTE_CMD}"
|
exec ssh "${SSH_OPTS[@]}" -p "${PORT:-22}" -tt "${SSH_TARGET}" -- /bin/sh -lc "'${REMOTE_CMD_Q}'"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|||||||
Reference in New Issue
Block a user