VNC 单脚本管理与批量下发
2026/3/9大约 2 分钟
本文记录一次 VNC 运维落地方案:在单机用 vnc_ctl.sh 统一管理服务生命周期,再通过 deploy_to_desktop.sh 按 IP 列表批量下发到多台 Linux 机器。
VNC 单脚本管理与批量下发
1. 目标场景
示例目标机器:
10.6.223.22310.6.220.16510.6.221.810.6.223.233
统一目标:
- 在远程桌面生成
vnc_ctl.sh - 后台运行
x0vncserver - 提供开机自启能力
- 支持状态检查与一键停止
- 支持批量下发,减少重复操作
2. 管理脚本设计
主脚本:vnc_ctl.sh
支持命令:
start:启动 VNCstop:停止 VNCcheck:检查进程、端口、密码文件与日志restart:重启服务install-autostart:安装@reboot自启remove-autostart:移除自启
核心思路:
- 通过
pgrep精确匹配x0vncserver参数定位进程 - 使用
nohup后台运行并记录日志 - 通过
crontab注入@reboot行实现开机拉起
示例(启动命令段):
nohup x0vncserver \
-display ":0" \
-passwordfile "$HOME/.vnc/passwd" \
-rfbport "5900" \
-nevershared \
-idletimeout 0 \
>>"$HOME/.vnc/x0vncserver-5900.log" 2>&1 &3. 批量下发脚本
下发脚本:deploy_to_desktop.sh
用途:把本地脚本按 IP 列表分发到远程桌面目录,并自动加执行权限。
示例命令:
./deploy_to_desktop.sh -f ./vnc_ctl.sh -i 10.6.223.233,10.6.220.165 -u sunri脚本默认行为:
- 目标目录默认为
/home/<user>/Desktop - 使用 SSH/SCP 分发
- 分发后自动执行
chmod +x
4. 推荐使用流程
chmod +x ./vnc_ctl.sh ./deploy_to_desktop.sh
./deploy_to_desktop.sh -f ./vnc_ctl.sh -i 10.6.223.233,10.6.220.165 -u sunri远程执行示例:
ssh sunri@10.6.220.165 "/home/sunri/Desktop/vnc_ctl.sh install-autostart && /home/sunri/Desktop/vnc_ctl.sh start && /home/sunri/Desktop/vnc_ctl.sh check"5. 测试结论
10.6.220.165:下发成功,脚本存在且可执行10.6.223.233:下发失败,原因为 SSH 认证失败(Permission denied)
6. 常见问题排查
- 缺少密码文件:在目标机执行
vncpasswd - 端口未监听:检查
~/.vnc/x0vncserver-5900.log - 开机自启未生效:检查
crontab -l中@reboot ... vnc_ctl.sh start ... - 无法下发:先手动验证
ssh <user>@<ip>
7. 小结
该方案把 VNC 运维拆成两个可复用脚本:
- 单机统一管理生命周期
- 多机统一批量下发
适合内网多台 Linux 机器的日常维护与快速复制部署。
