当前位置: 首页 > news >正文

jupyter服务器创建账户加映射对外账户地址

文章目录

      • 一、创建test1-test10用户(跳过已存在的test3)
      • 二、检查必要组件是否安装
      • 三、启动多用户映射的脚本(整合Code-Server启动与JupyterLab代理配置)
      • 说明

以下是根据需求生成的命令、检查脚本及启动脚本,按步骤执行即可:

一、创建test1-test10用户(跳过已存在的test3)

# 循环创建用户,若用户已存在则跳过
for U in test1 test2 test3 test4 test5 test6 test7 test8 test9 test10; doif ! id "$U" &>/dev/null; then# 用户不存在时创建,家目录自动生成,默认shell为bashuseradd -m -s /bin/bash "$U"# 为新用户设置密码(可根据需要修改密码)echo "$U:StrongPassword123" | chpasswdecho "用户 $U 创建完成"elseecho "用户 $U 已存在,跳过创建"fi
done

二、检查必要组件是否安装

创建检查脚本 check_dependencies.sh,用于验证 code-serverjupyterlabjupyter-server-proxy 是否安装:

#!/bin/bash# 检查code-server是否安装
if command -v code-server &>/dev/null; thenecho "✅ code-server 已安装,版本:$(code-server --version | head -n1)"
elseecho "❌ code-server 未安装,请先执行安装命令:curl -fsSL https://code-server.dev/install.sh | sh"
fi# 检查jupyterlab是否安装
if command -v jupyter &>/dev/null && jupyter lab --version &>/dev/null; thenecho "✅ JupyterLab 已安装,版本:$(jupyter lab --version)"
elseecho "❌ JupyterLab 未安装,请先执行安装命令:pip install jupyterlab"
fi# 检查jupyter-server-proxy是否安装
if pip show jupyter-server-proxy &>/dev/null; thenecho "✅ jupyter-server-proxy 已安装,版本:$(pip show jupyter-server-proxy | grep Version | awk '{print $2}')"
elseecho "❌ jupyter-server-proxy 未安装,请先执行安装命令:pip install jupyter-server-proxy"
fi# 检查jupyter-server-proxy扩展是否启用
if jupyter server extension list 2>/dev/null | grep -q "jupyter_server_proxy.*enabled"; thenecho "✅ jupyter-server-proxy 扩展已启用"
elseecho "❌ jupyter-server-proxy 扩展未启用,请执行:jupyter server extension enable --sys-prefix jupyter_server_proxy"
fi

执行检查脚本:

chmod +x check_dependencies.sh
./check_dependencies.sh

根据输出提示,安装缺失的组件(若有)。

三、启动多用户映射的脚本(整合Code-Server启动与JupyterLab代理配置)

创建启动脚本 start_multi_user_ide.sh,实现自动配置端口代理、启动各用户Code-Server及JupyterLab:

#!/bin/bash# 配置参数
USERS=(test1 test2 test3 test4 test5 test6 test7 test8 test9 test10)  # 用户列表
BASE_PORT=8881  # 起始端口(test1→8881,test2→8882,...,test10→8890)
JUPYTER_PORT=8900  # JupyterLab端口(与Code-Server不冲突)
JUPYTER_CONFIG_DIR="/opt/conda/etc/jupyter/jupyter_server_config.d"  # Jupyter配置目录# 步骤1:配置Jupyter允许代理的端口
echo "🔧 配置Jupyter代理允许的端口(8881-8890)..."
mkdir -p "$JUPYTER_CONFIG_DIR"
cat > "$JUPYTER_CONFIG_DIR/proxy-allowed-ports.json" << 'EOF'
{"ServerProxy": {"allowed_ports": [8881,8882,8883,8884,8885,8886,8887,8888,8889,8890]}
}
EOF# 步骤2:启动各用户的Code-Server
echo -e "\n🚀 启动各用户的Code-Server..."
for idx in "${!USERS[@]}"; doUSER="${USERS[$idx]}"PORT=$((BASE_PORT + idx))  # 计算当前用户的端口HOME_DIR="/home/${USER}"DATA_DIR="${HOME_DIR}/.local/share/code-server"  # 存储用户配置EXT_DIR="${HOME_DIR}/.local/share/code-server/extensions"  # 扩展目录LOG_FILE="${HOME_DIR}/code-server.log"  # 日志文件# 创建必要目录并授权mkdir -p "${DATA_DIR}" "${EXT_DIR}"chown -R "${USER}:${USER}" "${HOME_DIR}/.local/share"# 停止该端口已有的Code-Server进程if ss -ltn | grep -q ":${PORT} "; thenecho "⚠️ 端口 ${PORT} 已被占用,正在关闭旧进程..."pkill -f "code-server.*:${PORT}"sleep 2  # 等待进程退出fi# 以用户身份启动Code-Server(后台运行,日志写入文件)echo "▶️ 启动用户 ${USER} 的Code-Server(端口:${PORT})"su - "$USER" -c "\nohup code-server \--auth password \  # 如需免密,改为--auth none--bind-addr 127.0.0.1:${PORT} \--user-data-dir \"${DATA_DIR}\" \--extensions-dir \"${EXT_DIR}\" \\"${HOME_DIR}\" \> \"${LOG_FILE}\" 2>&1 &\"
done# 步骤3:启动JupyterLab(作为反向代理入口)
echo -e "\n🌐 启动JupyterLab(端口:${JUPYTER_PORT})..."
# 停止已有的JupyterLab进程
if ss -ltn | grep -q ":${JUPYTER_PORT} "; thenecho "⚠️ JupyterLab端口 ${JUPYTER_PORT} 已被占用,正在关闭旧进程..."pkill -f "jupyter-lab.*:${JUPYTER_PORT}"sleep 2
fi# 启动JupyterLab(后台运行,日志写入/var/log/jupyterlab.log)
nohup jupyter lab \--ip=0.0.0.0 \--port="${JUPYTER_PORT}" \--allow-root \
> /var/log/jupyterlab.log 2>&1 &# 等待3秒后检查服务状态
sleep 3
echo -e "\n✅ 启动完成,状态检查:"
echo "Code-Server端口监听情况:"
ss -ltnp | grep "888[1-9]\|8890" | awk '{print $4, $7}'
echo -e "\nJupyterLab监听情况:"
ss -ltnp | grep "${JUPYTER_PORT}" | awk '{print $4, $7}'# 输出访问地址示例
echo -e "\n📌 访问地址示例:"
echo "JupyterLab主页:http://<宿主机IP>:<宿主机映射端口>/lab?token=<日志中的token>"
echo "test1的Code-Server:http://<宿主机IP>:<宿主机映射端口>/proxy/8881/"
echo "test10的Code-Server:http://<宿主机IP>:<宿主机映射端口>/proxy/8890/"

执行启动脚本:

chmod +x start_multi_user_ide.sh
./start_multi_user_ide.sh

说明

  1. 用户创建:仅创建不存在的用户,test3若已存在会自动跳过。
  2. 依赖检查:通过脚本快速定位缺失的组件,确保环境就绪。
  3. 启动脚本
    • 自动配置Jupyter代理允许的端口(8881-8890)。
    • 为每个用户启动独立的Code-Server,绑定专属端口,日志存储在用户家目录。
    • 启动JupyterLab作为统一入口,后台运行并生成访问日志。
  4. 访问方式:通过宿主机映射的JupyterLab端口,访问 /proxy/<用户端口>/ 即可进入对应用户的Code-Server(初始需输入用户的Linux密码,如需免密可修改脚本中--auth参数)。
    本回答由AI生成,仅供参考,请仔细甄别,如有需求请咨询专业人士。
http://www.dtcms.com/a/322485.html

相关文章:

  • stm32项目(24)——基于STM32的汽车CAN通信系统
  • React中实现完整的登录鉴权与权限控制系统
  • (一)React复习小满(userImmer/userMemo/useContext/userCallback/userRef)
  • 需求评审需要哪些角色参与
  • 嵌入式 - Linux软件编程
  • Web文件上传:本地与云存储实战
  • day 36_2025-08-09
  • 如何在 Ubuntu 24.04 LTS Linux 上安装 Azure Data Studio
  • C# 通过第三方库INIFileParser管理INI配置文件
  • Golang的本地缓存freecache
  • Linux中Docker redis介绍以及应用
  • Kubernetes(K8s)不同行业的典型应用场景及价值分析 原创
  • 【31】C#实战篇——获取路径下的文件名(不包含路径和扩展名),并分离出文件名`fileName` ,文件名编号`SN`,文件名前缀`WMT`
  • 功能测试中常见的面试题-二
  • kettle插件-kettle MinIO插件,轻松解决文件上传到MinIO服务器
  • Nginx高性能web服务器
  • 如何衡量需求的紧急程度
  • 单片机输出高电平的两种方式
  • Spring Boot自定义Starter:从原理到实战全解析
  • TDengine IDMP 产品基本概念
  • Redis面试题及详细答案100道(01-15) --- 基础认知篇
  • 原生Vim操作大全
  • 分享一个基于Spark的眼科疾病临床数据可视化分析与应用研究Hadoop基于Vue和Echarts的眼科疾病统计数据交互式可视化系统的设计与实现
  • 麦当秀|MINDSHOW:在线AI PPT设计工具
  • linux 操作ppt
  • OceanBase架构设计
  • 7、docker |其余命令
  • 机器学习——08 特征降维
  • Android MVP架构详解:从理论到实践
  • (第三篇)spring cloud之Zookeeper注册中心