[Eisfair] Arbeiten über eine ssh-Verbindung
Christian Richter
christian at richter-ch.de
Do Jan 22 10:30:10 CET 2026
Am 21.01.26 um 18:46 schrieb Olaf Jaehrling:
> Dieses Konstrukt hat leider den Nachteil, dass man entweder immer
> gefragt wird beim einloggen oder man immer in die tmux-session kommt und
> beim Beenden der tmuxsession auch komplett ausgeloggt wird. Also ein
> Einloggen ohne tmux nicht nicht mehr möglich ist, es sei denn man macht
> es so wie Christian im Originalpost und lässt sich bei jeder Session
> fragen was man will.
Wie wäre es, hier einen Timer einzubauen, der nach bspw. 10 Sekunden
einfach die Shell aufruft?
Also in etwa so:
#!/bin/bash
if [ "${SSH_CONNECTION}" != "" ]
then
if [ -n "$SSH_CONNECTION" ] && [ -z "$TMUX" ]
then
if tmux list-sessions >/dev/null 2>&1
then
count=$(tmux list-sessions | wc -l)
echo
echo "tmux Sessions ($count):"
tmux list-sessions -F "#S" | nl -w2 -s': '
base_prompt="[Enter=NEW]"
if [ "$count" -ge "2" ]; then
prompt="$base_prompt q=Shell 1-$count: "
else
prompt="$base_prompt q=Shell $count: "
fi
else
prompt="[Enter=NEW tmux] q=Shell: "
fi
echo "10s timeout → Shell"
echo -n "$prompt"
# Einfacher read mit Timeout
timeout=10
input=""
if IFS= read -t "$timeout" -r input; then
# Eingabe: filtern
input=$(echo "$input" | sed 's/[^0-9qQ]//g' | tr
'[:upper:]' '[:lower:]')
else
# Timeout: Shell
input="q"
fi
echo # Neue Zeile
case "$input" in
q)
echo "Shell." >/dev/null
;;
*[0-9]*)
num=$(echo "$input" | grep -o '[0-9]' | head -1)
[ "$num" ] || num=1
session=$(tmux list-sessions -F "#S" | sed -n "${num}p")
if [ -n "$session" ]; then
exec tmux attach -t "$session"
else
exec tmux new-session
fi
;;
*)
exec tmux new-session
;;
esac
fi
fi
Gruß
Christian
Mehr Informationen über die Mailingliste Eisfair