v1.1.0: Alpine 轻量级 Docker 开发环境 + 敏感凭证清理
This commit is contained in:
@@ -0,0 +1,62 @@
|
||||
#!/bin/bash
|
||||
# ttyd 会话入口:根据 URL 参数或用户选择分配 tmux session
|
||||
|
||||
SESSION_NAME=""
|
||||
|
||||
# ttyd 会将 query string 存入 TTYD_QUERY_STRING 环境变量
|
||||
if [ -n "$TTYD_QUERY_STRING" ]; then
|
||||
# 解析 session 参数
|
||||
SESSION_NAME=$(echo "$TTYD_QUERY_STRING" | tr '&' '\n' | grep '^session=' | head -1 | cut -d= -f2)
|
||||
fi
|
||||
|
||||
if [ -z "$SESSION_NAME" ]; then
|
||||
# 没有指定 session,显示选择菜单
|
||||
echo ""
|
||||
echo "╔══════════════════════════════════════╗"
|
||||
echo "║ 选择或创建 tmux session ║"
|
||||
echo "╠══════════════════════════════════════╣"
|
||||
|
||||
# 列出已有 session
|
||||
EXISTING=$(tmux list-sessions 2>/dev/null | awk '{print $1}')
|
||||
if [ -n "$EXISTING" ]; then
|
||||
echo "║ 已有 session: ║"
|
||||
I=1
|
||||
for s in $EXISTING; do
|
||||
printf "║ [%d] %-33s║\n" "$I" "$s"
|
||||
I=$((I + 1))
|
||||
done
|
||||
else
|
||||
echo "║ (无已有 session) ║"
|
||||
fi
|
||||
|
||||
echo "╠══════════════════════════════════════╣"
|
||||
echo "║ 输入编号选择,或输入新名称创建 ║"
|
||||
echo "╚══════════════════════════════════════╝"
|
||||
echo ""
|
||||
|
||||
read -p "session: " CHOICE
|
||||
|
||||
if [ -z "$CHOICE" ]; then
|
||||
CHOICE="default"
|
||||
fi
|
||||
|
||||
# 判断是数字编号还是名称
|
||||
if echo "$CHOICE" | grep -qE '^[0-9]+$' && [ -n "$EXISTING" ]; then
|
||||
SESSION_NAME=$(echo "$EXISTING" | sed -n "${CHOICE}p")
|
||||
else
|
||||
SESSION_NAME="$CHOICE"
|
||||
fi
|
||||
|
||||
# 清屏
|
||||
clear
|
||||
fi
|
||||
|
||||
# session 名只保留字母数字下划线连字符
|
||||
SESSION_NAME=$(echo "$SESSION_NAME" | tr -cd 'a-zA-Z0-9_\-')
|
||||
|
||||
# 如果 session 已存在,共享 attach;否则新建
|
||||
if tmux has-session -t "$SESSION_NAME" 2>/dev/null; then
|
||||
exec tmux attach-session -t "$SESSION_NAME"
|
||||
else
|
||||
exec tmux new-session -s "$SESSION_NAME"
|
||||
fi
|
||||
Reference in New Issue
Block a user