feat(remote): 自 go-hua/remote 并入远程控制服务管理
- RDP/VNC(TightVNC)/Radmin 服务状态查询与启停重置、VNC 安装/配置读写/密码 加解密、GetRemoteInfo 汇总、CAD/SAS 注册表开关 - 与本库 file/shell/process 同属被控端远程运维能力; 新增依赖 kardianos/service、KarpelesLab/vncpasswd - 附 remote_test.go 与包 README(含平台支持矩阵与权限注意)
This commit is contained in:
@@ -0,0 +1,60 @@
|
||||
# remote
|
||||
|
||||
远程控制服务管理(被控端能力):RDP / VNC(TightVNC) / Radmin 的服务状态查询、
|
||||
启停与重置,VNC 服务端安装/配置读写,VNC 密码加解密,远程信息汇总。
|
||||
|
||||
> 自 go-hua/remote 平移并入(包名保持 `remote`),与本库 file/shell/process
|
||||
> 同属被控端远程运维能力。
|
||||
|
||||
## 用法
|
||||
|
||||
```go
|
||||
import "git.zeroonesoft.cn/golib/remote-core/remote"
|
||||
|
||||
// 汇总信息(主机名/IP/MAC/远程端口/VNC 密码等)
|
||||
info := remote.GetRemoteInfo()
|
||||
|
||||
// 远程服务状态与控制
|
||||
_ = remote.GetRdpServiceStatus() // kardianos/service Status
|
||||
_ = remote.GetVncServiceStatus() // 同上
|
||||
_ = remote.GetRadminServiceStatus() // (int, error):1 运行 / 0 停止 / -1 未安装
|
||||
_ = remote.GetServiceStatus("SessionEnv") // 通用按服务名查询
|
||||
err := remote.ServiceStart(name) // 启动 / ServiceStop 停止
|
||||
_ = remote.GetServiceReset(name) // 重置类服务状态
|
||||
|
||||
// RDP / VNC 端口与 VNC 密码读取
|
||||
port, err := remote.GetRdpPort()
|
||||
vncPort, err := remote.GetVncPort()
|
||||
pass, err := remote.GetVncPassword()
|
||||
|
||||
// VNC(TightVNC) 服务端管理(Windows)
|
||||
cfg := remote.VncServerDefaultConfig(true /* 随机密码 */) // VncServerConfig
|
||||
err = remote.WriteVncServerConfig(cfg)
|
||||
cfg, err = remote.ReadVncServerConfig()
|
||||
_, msg, err := remote.InstallVncServer() // 安装服务(需管理员权限)
|
||||
err = remote.VncInit() // 初始化/修复配置
|
||||
err = remote.VncStart() // VncStop / VncRestart
|
||||
err = remote.VncInstall() // VncUninstall
|
||||
err = remote.RunVncService() // 以服务方式运行
|
||||
|
||||
// VNC 密码加解密(TightVNC 注册表存储格式)
|
||||
enc := remote.VncPasswordCrypt("plainpass") // []byte
|
||||
plain := remote.VncPasswordDecrypt(enc) // string
|
||||
|
||||
// CAD/SAS 相关注册表开关(Windows)
|
||||
err = remote.EnableSoftwareSASGeneration()
|
||||
```
|
||||
|
||||
## 平台支持
|
||||
|
||||
- `remote.go` / `type.go`:跨平台(依赖 `kardianos/service`)。
|
||||
- `windows.go` / `vnc.go`:`//go:build windows`(注册表、TightVNC 配置)。
|
||||
- `unix.go`:`//go:build linux`(精简实现)。
|
||||
|
||||
## 注意
|
||||
|
||||
- `GetServiceStatus` 系列对未安装服务返回 -1 而非错误;`GetRdpServiceStatus` /
|
||||
`GetVncServiceStatus` 走 `kardianos/service`,未安装返回 error。
|
||||
- `InstallVncServer` / `VncInit` / CAD 开关需要管理员权限,失败信息见返回 msg 或 error。
|
||||
- VNC 密码格式与 TightVNC 兼容(`KarpelesLab/vncpasswd` 实现),加解密为确定性
|
||||
变换,注意密文落盘位置的访问控制。
|
||||
Reference in New Issue
Block a user