From 0142d206485cc041d70f138d680ca8896c768e09 Mon Sep 17 00:00:00 2001 From: yeti Date: Fri, 18 Apr 2025 01:10:56 +0100 Subject: [PATCH] fix(ssh): fix issues with tmux_cmd, improve logs, suppress outputs --- ssh_router.sh | 31 +++++++++++++++---------------- 1 file changed, 15 insertions(+), 16 deletions(-) diff --git a/ssh_router.sh b/ssh_router.sh index 6242510..0154a37 100755 --- a/ssh_router.sh +++ b/ssh_router.sh @@ -7,7 +7,7 @@ TMUX_SESSION="analytics-backend" DEV_USER="devuser" VIEW_USER="viewer" -TMUX_CMD="tmux -S /tmp/tmux-shared/dev-socket" +TMUX_CMD=(tmux -S /tmp/tmux-shared/dev-socket) log() { echo "[$(date '+%Y-%m-%d %H:%M:%S')] $*" @@ -32,21 +32,22 @@ start_container_if_needed() { "$IMAGE" elif ! podman inspect -f '{{.State.Running}}' "$CONTAINER" | grep -q true; then log "⚡ Starting existing container $CONTAINER..." - podman start "$CONTAINER" + podman start "$CONTAINER" >/dev/null 2>&1 fi + sleep 1 } # After devuser exits... check_devuser_attached() { # Get list of clients - client_users=$(podman exec "$CONTAINER" "$TMUX_CMD" list-clients -t "$TMUX_SESSION" -F "#{client_user}" 2>/dev/null) + client_users=$(podman exec "$CONTAINER" "${TMUX_CMD[@]}" list-clients -t "$TMUX_SESSION" -F "#{client_user}" 2>/dev/null) if echo "$client_users" | grep -q "$DEV_USER"; then log "💡 devuser still attached — container stays running" return 0 else - log "⚠️ devuser has exited — stopping container" - podman stop "$CONTAINER" + log "⚠️ $CONTAINER has exited — stopping container" + podman stop "$CONTAINER" >/dev/null 2>&1 return 1 fi } @@ -58,16 +59,15 @@ rw) start_container_if_needed # Run $TMUX_CMD session inside the container - if ! podman exec -it --user "$DEV_USER" "$CONTAINER" "$TMUX_CMD" has-session -t "$TMUX_SESSION" 2>/dev/null; then - if ! podman exec -it --user "$DEV_USER" "$CONTAINER" "$TMUX_CMD" new-session -s "$TMUX_SESSION"; then - log "❌ Could not attach to $TMUX_CMD session. Please contact admin or try again later." - podman logs "$CONTAINER" + if ! podman exec -it --user "$DEV_USER" "$CONTAINER" "${TMUX_CMD[@]}" has-session -t "$TMUX_SESSION" >/dev/null 2>&1; then + if ! podman exec -it --user "$DEV_USER" "$CONTAINER" "${TMUX_CMD[@]}" new-session -s "$TMUX_SESSION" >/dev/null 2>&1; then + log "❌ Could not create new ${TMUX_CMD[*]} session. Please contact admin or try again later." exit 1 fi else - if ! podman exec -it --user "$DEV_USER" "$CONTAINER" "$TMUX_CMD" attach -t "$TMUX_SESSION"; then - log "❌ Could not attach to $TMUX_CMD session. Please contact admin or try again later." - podman logs "$CONTAINER" + log "⚡ $CONTAINER reattaching..." + if ! podman exec -it --user "$DEV_USER" "$CONTAINER" "${TMUX_CMD[@]}" attach -t "$TMUX_SESSION" 2>/dev/null; then + log "❌ Could not attach to ${TMUX_CMD[*]} session. Please contact admin or try again later." exit 1 fi fi @@ -76,10 +76,9 @@ rw) exit 0 ;; ro) - if podman container exists "$CONTAINER" && podman inspect -f '{{.State.Running}}' "$CONTAINER" | grep -q true; then - if ! podman exec -it --user "$VIEW_USER" "$CONTAINER" "$TMUX_CMD" attach -r -t "$TMUX_SESSION"; then - log "❌ Could not attach to $TMUX_CMD session. Please contact admin or try again later." - podman logs "$CONTAINER" + if (podman container exists "$CONTAINER" && podman inspect -f '{{.State.Running}}' "$CONTAINER" | grep -q true) >/dev/null 2>&1; then + if podman exec -it --user "$VIEW_USER" "$CONTAINER" "${TMUX_CMD[@]}" attach -r -t "$TMUX_SESSION"; then + log "❌ Could not attach to ${TMUX_CMD[*]} session. Please contact admin or try again later." exit 1 fi exit 0