From 3c31ad240d2127f5502427797ff23af0522bb52b Mon Sep 17 00:00:00 2001 From: mshe <666666666@666666666.666666666> Date: Wed, 27 May 2026 15:37:31 +0800 Subject: [PATCH] =?UTF-8?q?feat(vnc):=20=E6=B7=BB=E5=8A=A0VNC=E6=9C=8D?= =?UTF-8?q?=E5=8A=A1=E5=99=A8=E6=89=B9=E9=87=8F=E9=83=A8=E7=BD=B2=E8=84=9A?= =?UTF-8?q?=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 创建run.sh脚本实现用户批量创建、VNC配置和公共目录设置 - 添加预安装依赖包功能包括XFCE桌面环境和TigerVNC服务 - 实现批量创建10个用户并设置VNC密码的自动化流程 - 配置防火墙规则开放noVNC端口和SSL证书生成 - 创建公共共享目录并为每个用户建立工作区软链接 - 分离setup.sh中的依赖安装逻辑到独立的pre_install.sh脚本 - 移除原有的Python环境初始化代码到新的预安装脚本中 --- pre_install.sh | 5 +++ run.sh | 105 +++++++++++++++++++++++++++++++++++++++++++++++++ setup.sh | 5 --- 3 files changed, 110 insertions(+), 5 deletions(-) create mode 100755 pre_install.sh create mode 100644 run.sh diff --git a/pre_install.sh b/pre_install.sh new file mode 100755 index 0000000..f134876 --- /dev/null +++ b/pre_install.sh @@ -0,0 +1,5 @@ +apt install -y python3.12-dev python3.12-venv +python3 -m venv .venv --system-site-packages +.venv/bin/python3.12 -m pip install -r requirements.txt +playwright install +playwright install-deps diff --git a/run.sh b/run.sh new file mode 100644 index 0000000..87d6705 --- /dev/null +++ b/run.sh @@ -0,0 +1,105 @@ +#!/bin/bash +# 需要创建的用户数量 +USER_COUNT=10 +PUBLIC_DIR="/shared" + +# 预安装软件 +pre_install(){ + sudo apt install -y xfce4 xfce4-goodies + sudo apt install -y tigervnc-standalone-server tigervnc-common + sudo apt install -y git python3 openssl +} + +# 开放防火墙 +open_firewall(){ + # 开放防火墙端口(根据实际安全策略调整) + sudo ufw allow 6080/tcp # noVNC 主端口 + sudo ufw allow 6081/tcp # 用户2 + sudo ufw allow 6082/tcp # 用户3 + # 注意:VNC原生端口(5901等)不需要开放,因为noVNC作为代理不直接暴露它们 +} + +# 批量创建用户 +batch_create_user(){ + # 批量创建用户 user1 到 user100 + for i in $(seq 1 $USER_COUNT); do + username="user$i" + # 创建用户 + sudo useradd -m -s /bin/bash "$username" + # 设置默认密码(与用户名相同,建议后续让用户自行修改) + echo "$username:$username" | sudo chpasswd + echo "用户 $username 创建完成,密码: $username" + done + echo "所有用户创建完成!" +} + +# 批量删除用户 +batch_delete_user(){ + for i in $(seq 1 $USER_COUNT); do + username="user$i" + sudo userdel -r "$username" 2>/dev/null + if [ $? -eq 0 ]; then + echo "已删除用户: $username" + else + echo "用户 $username 不存在,跳过" + fi + done + echo "批量删除完成!" +} + +# 批量设置vnc密码 +batch_set_vncpdw(){ + for i in $(seq 1 $USER_COUNT); do + username="user$i" + # 使用 -c 参数直接执行命令,避免 heredoc 变量问题 + sudo su - "$username" -c "mkdir -p ~/.vnc && echo '$username' | vncpasswd -f > ~/.vnc/passwd && chmod 600 ~/.vnc/passwd" + echo "正在设置 $username 的VNC密码 " + done + echo "所有VNC密码设置完成!" +} + +# 创建公共目录 +cerate_public_dir(){ + # 创建目录 + sudo mkdir -p "$PUBLIC_DIR" + # 设置权限:所有用户可读、可写、可执行 + sudo chmod 777 "$PUBLIC_DIR" + # 设置粘滞位(用户只能删除自己的文件) + sudo chmod +t "$PUBLIC_DIR" + # 设置所有者 + sudo chown root:root "$PUBLIC_DIR" + echo "公共文件夹已创建: $PUBLIC_DIR" + echo "权限: $(ls -ld $PUBLIC_DIR)" +} + +# 在每个用户home目录创建软连接 +create_shortcut_for_users(){ + for i in $(seq 1 $USER_COUNT); do + username="user$i" + # 在用户家目录创建软链接 + sudo su - "$username" -c "ln -sf $PUBLIC_DIR ~/workspace" + echo "正在创建快捷方式 $username" + done +} + +install_vnc_server(){ + cd $PUBLIC_DIR + sudo git clone https://github.com/novnc/noVNC.git + sudo git clone https://github.com/novnc/websockify.git +} + +create_ssl_cert(){ + cd $PUBLIC_DIR/noVNC + sudo openssl req -new -x509 -days 365 -nodes \ + -out self.pem \ + -keyout self.pem \ + -subj "/C=CN/ST=Beijing/L=Beijing/O=Test/CN=localhost" +} + +# batch_create_user +# batch_set_vncpdw +# cerate_public_dir +# create_shortcut_for_users +# install_vnc_server +create_ssl_cert +# batch_delete_user \ No newline at end of file diff --git a/setup.sh b/setup.sh index f3679f5..d51f952 100755 --- a/setup.sh +++ b/setup.sh @@ -1,6 +1 @@ -apt install -y python3.12-dev python3.12-venv -python3 -m venv .venv --system-site-packages -.venv/bin/python3.12 -m pip install -r requirements.txt -playwright install -playwright install-deps .venv/bin/python3.12 spider/china_net.py \ No newline at end of file