feat(deploy): Windows 自动登录自启脚本与运行手册补章
autologon.ps1 交互输密码启用/撤销 AutoAdminLogon(DefaultPassword 仅 Administrators 可读),补齐「开机自动登录 → Startup keepalive → 控制台+ 调度器」自启链唯一缺口;采集依赖 CDP 交互会话,不能用服务/SYSTEM 任务 替代。runbook 增补开机自启与重启验收章节。
This commit is contained in:
1 parent
9feb188d93
commit
e5761bd828
2 files changed
+60
No files matched your search
@@ -0,0 +1,47 @@
|
||||
# GYXX Flow 开机自启:启用/关闭 Windows 自动登录
|
||||
#
|
||||
# 背景:控制台+调度器的自启链是
|
||||
# 开机 → 自动登录进桌面 → Startup\gyxx-keepalive.vbs → keepalive → 控制台(8765)+调度器
|
||||
# 唯一缺口是 AutoAdminLogon(默认 0,重启后停在登录界面,Startup 不触发)。
|
||||
# 采集依赖浏览器 CDP,必须跑在交互式用户会话,因此不能用服务/Task Scheduler SYSTEM 替代。
|
||||
#
|
||||
# 启用(交互输入密码,不会留在命令历史):
|
||||
# powershell -ExecutionPolicy Bypass -File D:\gyxx-flow\deploy\watchdog\autologon.ps1
|
||||
# 撤销:
|
||||
# powershell -ExecutionPolicy Bypass -File D:\gyxx-flow\deploy\watchdog\autologon.ps1 -Disable
|
||||
#
|
||||
# 注意:DefaultPassword 以明文存于 HKLM Winlogon(仅 Administrators 可读),
|
||||
# 内网采集机可接受;介意安全性请改用 Sysinternals Autologon.exe(LSA secret 存储)。
|
||||
param(
|
||||
[switch]$Disable
|
||||
)
|
||||
|
||||
$winlogon = 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon'
|
||||
|
||||
if ($Disable) {
|
||||
Set-ItemProperty $winlogon -Name AutoAdminLogon -Value '0'
|
||||
Remove-ItemProperty $winlogon -Name DefaultPassword -ErrorAction SilentlyContinue
|
||||
Write-Host '已关闭自动登录(DefaultPassword 已清除)。' -ForegroundColor Yellow
|
||||
exit 0
|
||||
}
|
||||
|
||||
$pwd1 = Read-Host -AsSecureString "输入 $env:USERNAME 的 Windows 登录密码"
|
||||
$pwd2 = Read-Host -AsSecureString '再输一次确认'
|
||||
$plain1 = [Net.NetworkCredential]::new('', $pwd1).Password
|
||||
$plain2 = [Net.NetworkCredential]::new('', $pwd2).Password
|
||||
if ($plain1 -ne $plain2) { throw '两次输入不一致,未做任何修改。' }
|
||||
if ([string]::IsNullOrEmpty($plain1)) {
|
||||
Write-Warning '密码为空:策略 LimitBlankPasswordUse=1 会拒绝空密码自动登录,请先给账户设置密码。'
|
||||
exit 1
|
||||
}
|
||||
|
||||
Set-ItemProperty $winlogon -Name AutoAdminLogon -Value '1'
|
||||
Set-ItemProperty $winlogon -Name DefaultUserName -Value $env:USERNAME
|
||||
Set-ItemProperty $winlogon -Name DefaultDomainName -Value $env:COMPUTERNAME
|
||||
Set-ItemProperty $winlogon -Name DefaultPassword -Value $plain1
|
||||
# AutoLogonCount 每次自动登录会递减,删掉表示不限次数
|
||||
Remove-ItemProperty $winlogon -Name AutoLogonCount -ErrorAction SilentlyContinue
|
||||
|
||||
Write-Host '自动登录已启用。' -ForegroundColor Green
|
||||
Write-Host '验证方式:挑空闲时间重启一次,开机应自动进桌面,约 2 分钟内控制台(127.0.0.1:8765)与调度器就位;'
|
||||
Write-Host '也可查看 D:\gyxx-flow\var\logs\keepalive\keepalive.log 出现 keepalive-start / scheduler-restarted / console-restarted。'
|
||||
@@ -161,6 +161,19 @@ uv run gyxx schedule run --env-file /etc/gyxx-flow/gyxx-flow.env
|
||||
|
||||
需要停用单个工作流时,优先修改该工作流的调度启用状态,先 dry-run,再重启服务。其他模块继续运行。
|
||||
|
||||
### 开机自启(Windows 生产机)
|
||||
|
||||
重启/关机开机后的自动恢复链路:**Windows 自动登录 → `Startup\gyxx-keepalive.vbs` → `deploy/watchdog/gyxx_keepalive.py` → 控制台(8765) + `gyxx schedule run` 调度器**。keepalive 每 30 秒巡检并负责拉起死掉的控制台/调度器(单实例锁防双跑,冷却 120s、熔断保护),日志在 `var/logs/keepalive/keepalive.log`,验收用 `python deploy/watchdog/gyxx_keepalive.py --once`。
|
||||
|
||||
采集依赖浏览器 CDP,必须运行在交互式用户会话中,因此不能改成 Windows 服务或 Task Scheduler SYSTEM 任务(也不允许注册 Windows 任务计划)。免登录自启的唯一环节是自动登录,用脚本启用(密码交互输入、写入 `HKLM\...\Winlogon`,仅 Administrators 可读):
|
||||
|
||||
```powershell
|
||||
powershell -ExecutionPolicy Bypass -File D:\gyxx-flow\deploy\watchdog\autologon.ps1 # 启用
|
||||
powershell -ExecutionPolicy Bypass -File D:\gyxx-flow\deploy\watchdog\autologon.ps1 -Disable # 撤销
|
||||
```
|
||||
|
||||
启用后重启验证:开机自动进桌面,约 2 分钟内控制台与调度器就位;停机窗内到期任务由调度器 catch-up 自动补跑。
|
||||
|
||||
## 数据和浏览器状态
|
||||
|
||||
生产 `GYXX_DATA_ROOT` 必须位于源码目录之外,Linux 推荐 `/var/lib/gyxx-flow`:
|
||||
|
||||
Reference in new issue
Block a user