

UniDesk 桌面助手是装在麒麟、统信终端电脑上的一个小工具,分两部分:
客户端:装在每台办公电脑上。登录后能看到本机的硬件和系统信息,主界面是一个可以自己调整的卡片面板。 服务端:装在一台内网服务器上。负责账号验证、保存每个人的面板布局、收集各台电脑上报的台账,管理员用浏览器打开管理台就能看。
服务端只用 Python 标准库,客户端只依赖 PyQt5,两边都能打成单个可执行文件,拷过去就跑,不用装 Python 环境。
部署
1 服务端
两种方式,选一种。
A:单文件(推荐)。在打包机上执行:
bash scripts/build_server_single.sh
得到 server/dist/unidesk-server,拷到服务器任意目录:
B:源码方式。服务器上有 Python 3 就行,不用装任何库:
python3 server.py--port 8800
开机自启。写个 systemd 单元 /etc/systemd/system/unidesk.service:
[Unit]Description=UniDesk sync serverAfter=network.target[Service]WorkingDirectory=/opt/unideskExecStart=/opt/unidesk/unidesk-server --port 8800Restart=alwaysRestartSec=5[Install]WantedBy=multi-user.target
然后 sudo systemctl enable --now unidesk。
2 内置服务器地址
打包客户端之前,改 app/config.py 里的一行:
BUILTIN_SERVER="http://192.168.3.35:8800"
改成你们服务器的实际地址。这样打出来的客户端拿到手就能连,用户不用配任何东西。万一哪台机器要连别的服务器,登录窗口右下角有「服务器设置」,可以自己改,改完存在本机 ~/.officeassistant/config.json,比重装省事。
3 客户端打包和下发
打包机上需要 PyQt5 和 PyInstaller
sudoapt install-ypython3-pyqt5bashscripts/build_single_file.sh
得到 app/dist/UniDesk,大约几十 MB。把它放到服务端的 downloads/ 目录里,用户浏览器打开 http://服务器IP:8800/ 就能下载。下载完双击运行,没有安装过程。
也可以打 deb 包走开始菜单:
bashscripts/build_deb.shsudodpkg-iunidesk_1.3.0_all.deb
注意 CPU 架构。x86 机器上打出来的文件在 ARM(飞腾、鲲鹏)上跑不了,反过来也一样。有几种架构就打几次,文件名分开,比如 UniDesk-x86、UniDesk-arm64,下载页会全部列出来。
服务端管理台
浏览器打开 http://服务器IP:8800/admin,用 admin 登录。分三个页签。

1 用户管理
新建账户:填用户名和密码(至少 6 位),创建完用户就能在客户端登录。 重置密码:直接在行内输入新密码点重置。 删除:删掉账号连同它的面板布局一起删。admin 账号删不掉,防止把自己锁外面。
客户端登录页也有注册按钮,但正式环境建议关掉这个口子,账号统一在管理台开。目前版本还留着,后续可以加个开关。
2 客户端台账
客户端每次登录后会把本机信息上报一次,包括 CPU、主板、显卡、硬盘、显示器、网卡、声卡、操作系统、激活状态、SN 号、MAC、内外网 IP。同一台机器重复登录只更新记录,不会重复登记——靠的是连接 ID(根据机器 DMI UUID 算出来的 12 位指纹)。
台账页能看到每台机器的主机名、登录账号、操作系统、CPU、内网 IP、SN、最近在线时间。一小时内上报过的显示绿点。
备注:每台机器可以写备注,比如使用人、部门、房间号,写完点保存。备注会跟着 CSV 一起导出。 详情:点进去看这台机器上报的完整信息。 导出 CSV:页面右上角,导出的文件带 UTF-8 BOM,Excel 双击打开不会乱码。

3 台账报表
纯统计页,不用配什么,数据够了自己就有内容:
上面一排数字卡片:设备总数、当前在线、24 小时活跃、操作系统种类。 下面几张图:操作系统分布(麒麟、统信会自动归类)、CPU 架构分布、激活状态统计、每个账号登记了几台设备、按日期的新登记趋势。
机器多了以后,这个页能直接回答”我们有多少台麒麟、多少台统信、还有多少没激活”这类问题。
客户端使用
1 登录
两种登录方式,两个页签:
账号密码:管理台开的账号直接登。输错了会提示。 微信扫码:点「刷新二维码」,手机微信或者浏览器扫一下,手机上点确认,电脑这边两秒内自动进去。二维码三分钟过期,过期了再刷一次。

默认是演示模式:二维码里是个确认链接,手机浏览器打开选个账号就算登录。要接真的企业微信,在服务端设环境变量 WECOM_CORPID 和 WECOM_SECRET,二维码会自动切到企业微信的官方扫码地址。
登录窗口右下角「⚙ 服务器设置」:改服务器地址、测试连接、恢复默认。改完立刻生效,存在本机。
2 设备详情
登录后主界面默认四张卡片:硬件信息、系统信息、常用入口、时间日历。
硬件信息包括 CPU(型号、架构、核数、主频)、主板(厂商、型号、BIOS)、显卡、硬盘(型号+容量)、显示器(接口+分辨率)、网卡(驱动+MAC)、声卡。系统信息包括操作系统版本、内核、激活状态、连接 ID、SN 号、MAC、内外网 IP。
有两项在部分机器上需要 root 才能读到:SN 号和激活状态。碰到显示”需 root 权限”的,在终端上执行一次下面的配置就行,只放行这几条查询命令,不影响系统安全:
echo'%sudo ALL=(ALL) NOPASSWD: /usr/sbin/dmidecode -s system-serial-number, /usr/sbin/dmidecode, /usr/sbin/kylin-activation, /usr/bin/kylin-activation, /usr/sbin/uos-license-ctl, /usr/bin/uos-license-ctl'|sudotee /etc/sudoers.d/unidesksudochmod 440 /etc/sudoers.d/unidesk
配完重启客户端,信息就出来了。不配也不影响别的功能。
3 自定义面板
点右上角「自定义面板」进入编辑状态:
每张卡片右上角出现三个按钮:◀ 左移、▶ 右移、✕ 移除。 左上角「+ 添加内容」可以把移除的卡片加回来。 调完点「完成」,布局自动存到服务端。
布局是跟着账号走的。同一账号在别的电脑登录,面板摆法一模一样。这就是参数里说的”变更后数据会跟随当前登陆的账号”。
4 常用入口
卡片里预置了两个示例链接,点「+添加」填名称和网址就能加自己的常用系统,点条目用默认浏览器打开。这个列表存在本机 ~/.officeassistant/quicklinks.json,不跟账号漫游,每台机器可以不一样。

夜雨聆风