37 lines
1.1 KiB
Bash
37 lines
1.1 KiB
Bash
#!/usr/bin/env bash
|
|
CONTAINER=$(cat "/home/$(whoami)/.lxc-container" 2>/dev/null)
|
|
|
|
if [[ -z "$CONTAINER" ]]; then
|
|
echo "No container assigned. Contact admin."
|
|
exit 1
|
|
fi
|
|
|
|
# ensure running
|
|
lxc-start -n "$CONTAINER" 2>/dev/null || true
|
|
|
|
# --- build env flags to forward into the container ---
|
|
ENV_ARGS=()
|
|
ENV_ARGS+=(--keep-env) # start from the SSH session env instead of wiping it
|
|
|
|
# always override these inside the container
|
|
ENV_ARGS+=(-v "HOME=/root")
|
|
ENV_ARGS+=(-v "USER=root")
|
|
ENV_ARGS+=(-v "SHELL=/bin/bash")
|
|
ENV_ARGS+=(-v "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin")
|
|
|
|
# forward TERM (fixes color/ncurses)
|
|
[[ -n "$TERM" ]] && ENV_ARGS+=(-v "TERM=$TERM")
|
|
# forward locale
|
|
[[ -n "$LANG" ]] && ENV_ARGS+=(-v "LANG=$LANG")
|
|
[[ -n "$LC_ALL" ]] && ENV_ARGS+=(-v "LC_ALL=$LC_ALL")
|
|
# forward COLORTERM (used by modern terminals & vscode)
|
|
[[ -n "$COLORTERM" ]] && ENV_ARGS+=(-v "COLORTERM=$COLORTERM")
|
|
|
|
if [[ -n "$SSH_ORIGINAL_COMMAND" ]]; then
|
|
exec sudo lxc-attach "${ENV_ARGS[@]}" -n "$CONTAINER" -- \
|
|
/bin/bash -lc "$SSH_ORIGINAL_COMMAND"
|
|
else
|
|
exec sudo lxc-attach "${ENV_ARGS[@]}" -n "$CONTAINER" -- \
|
|
/bin/login -f root
|
|
fi
|