当前位置: 首页 > news >正文

内网离线部署RPA:打包EXE+本地激活+数据零上云方案

领导给了一周我前三天全耗在这个报错上无法连接到 activation.xxx.com 请检查网络连接后重试2024年5月我用的蓝印RPA物理隔离内网部处理核心业务数据要求数据不出本机流程不外传审计能溯源。第一坑假离线激活某工具宣传支持本地部署安装后首次启动弹出连接license服务器窗口。内网直接报错。翻文档找离线激活需要三步联网机器生成请求文件→传外网换激活文件→传回内网导入。本质上还是依赖外网只是换了种形式。真正离线的工具安装包内置激活模块输入license密钥后本地校验通过全程零外网。后来找到的那款安装完断网状态直接激活没有任何弹窗。第二坑流程文件默认云同步某工具保存流程后抓包发现有流量往sync.xxx.com走。排查设置-高级-数据管理-同步偏好buried在三层菜单里默认开启。关掉后重启软件同步选项又自动打开。解决防火墙阻断该域名观察三天确认无异常流量。同时修改默认保存路径到加密磁盘。第三坑组件运行时拉取资源设计流程时用了某智能识别组件本机测试正常。搬到内网后报错无法下载模型文件 ocr_model_v3.dat 请检查网络连接或联系管理员原来组件首次使用时要联网下载AI模型本地无缓存。内网环境下直接卡死。解决联网环境预装所有组件找到缓存目录C:\ProgramData\XXX\Components\整体打包搬进内网。或者弃用云增强组件改用基于本地Windows API的传统识别方案。部署架构┌─────────────────────────────────────────┐ │ 内网终端 / 服务器 │ │ │ │ ┌─────────────┐ ┌───────────────┐ │ │ │ RPA主程序 │←──→│ 本地流程仓库 │ │ │ │ (离线激活) │ │ (加密磁盘路径) │ │ │ └──────┬──────┘ └───────────────┘ │ │ │ │ │ ┌──────┴──────┐ ┌───────────────┐ │ │ │ Python 3.10 │←──→│ 本地组件库 │ │ │ │ (Anaconda离线)│ │ (预装完整包) │ │ │ └──────┬──────┘ └───────────────┘ │ │ │ │ │ ┌──────┴──────┐ ┌───────────────┐ │ │ │ 输入数据源 │ │ 输出/日志留存 │ │ │ │ (本地Excel │───→│ (本地目录结构) │ │ │ │ /数据库直连)│ │ (按日期归档) │ │ │ └─────────────┘ └───────────────┘ │ │ │ │ [防火墙规则阻断所有外网出站连接] │ └─────────────────────────────────────────┘关键配置与代码1. 流程打包EXE实际工具中通过GUI配置审计时需提供参数清单。Python调用示例# 调用打包API生成独立EXE from rpa_sdk import Packager pkg Packager() pkg.set_source(rD:\Flows\Auto_Reconcile.flow) pkg.set_output(rD:\Deploy\Auto_Reconcile.exe) # 加密与授权配置 pkg.set_encryption( passworduser_defined, # 自定义密码 machine_bindTrue, # 绑定设备 expire_date2025-12-31 # 有效期 ) # 运行时约束 pkg.set_runtime( network_requiredFalse, # 运行时无需联网 local_logsTrue, # 日志本地留存 screenshot_local_onlyTrue # 截图仅本地 ) # 打包生成绿色EXE对方无需安装运行环境 pkg.build()打包后的Auto_Reconcile.exe可在未安装RPA环境的机器上直接运行双击即执行。2. 日志本地化管理import os import shutil from datetime import datetime, timedelta LOG_BASE rD:\RPA_Logs RETENTION_DAYS 30 def get_log_dir(flow_name): today datetime.now().strftime(%Y%m%d) log_dir os.path.join(LOG_BASE, flow_name, today) os.makedirs(log_dir, exist_okTrue) return log_dir def cleanup_logs(): cutoff datetime.now() - timedelta(daysRETENTION_DAYS) for flow in os.listdir(LOG_BASE): flow_path os.path.join(LOG_BASE, flow) if not os.path.isdir(flow_path): continue for date_dir in os.listdir(flow_path): try: dir_date datetime.strptime(date_dir, %Y%m%d) if dir_date cutoff: shutil.rmtree(os.path.join(flow_path, date_dir)) except ValueError: continue # 流程中调用 current_log get_log_dir(Auto_Reconcile) # 所有日志、截图写入 current_log # 流程结束后执行 cleanup_logs()3. Python环境离线化联网机器准备conda create -n rpa_env python3.10 pandas openpyxl sqlalchemy cx_Oracle pywin32 conda pack -n rpa_env -o rpa_env.tar.gz内网解压后RPA配置解释器路径D:\Anaconda\envs\rpa_env\python.exe额外踩坑Oracle客户端版本。内网预装Oracle 11g客户端但cx_Oracle需对应版本DLL。报错ORA-12154时不是代码问题是PATH环境变量没指向正确的instantclient目录。折腾半天才找到原因。4. 数据库直连import cx_Oracle import pandas as pd import win32cred # 从Windows凭据管理器读取密码 # 读取存储的凭据禁止硬编码密码 cred win32cred.CredRead(ORACLE_RPA, win32cred.CRED_TYPE_GENERIC) password cred[CredentialBlob].decode(utf-16) conn cx_Oracle.connect( userrpa_user, passwordpassword, dsninternal-db:1521/PROD, encodingUTF-8 ) # 内存处理不落临时文件 df pd.read_sql(SELECT * FROM transactions WHERE statusPENDING, conn) df_filtered df[df[amount] 1000] # 结果写回数据库 df_filtered.to_sql(high_value, conn, if_existsappend, indexFalse) conn.close()安全加固清单加固项操作验证运行账号最小权限创建专用账号rpa_svc仅授权必要目录和DB尝试访问无关目录应被拒绝敏感信息存储密码存入Windows凭据管理器流程文件中无硬编码网络行为审计防火墙阻断所有出站仅保留内网DB端口Wireshark抓包72小时零外联流程文件防拷贝打包EXE启用机器绑定密码未授权设备运行应报错日志完整性本地按日期归档定期哈希校验SHA256值比对一致验收实录安全部张工话少验收时只列清单我手心全是汗物理断网测试拔网线安装、激活、设计流程、运行任务、导出结果全程无报错流量监控Wireshark抓包一周零外网IP连接日志溯源随机抽查三个月前记录本地目录完整调取含时间戳、步骤、输入输出摘要权限验证打包的EXE拷到个人笔记本运行提示未授权设备拒绝执行四项全过审计材料盖章。张工难得说了句这个可以写进材料。内网部署RPA最大的敌人是伪本地——名义上本地安装实则处处依赖外网。选型时务必实测断网能不能活保存后有没有外网流量组件运行时会不会偷偷下载资源把RPA当成完全离线的单机软件用所有数据路径对IT可见、可控、可审计才是内网合规的正确打开方式。
http://www.zskr.cn/news/1360043.html

相关文章:

  • Codex CLI 接 Gemini 3.5 Flash 实测:代码生成、推理速度、价格三维度横评(2026)
  • 苗带识别导向的水田管理机直线辅助驾驶系统【附程序】
  • 解决连接蓝牙音箱默认音量100%的问题
  • 深夜办公不掉链:2026免费PDF转PPT工具Top榜 - 时讯资讯
  • 题解:luogu P8996([CEOI 2022] Abracadabra)
  • agent memory论文解析一:解析项目(a-mem)
  • 机场应急处置保障:黎阳之光无感赋能,精准调度救援,提升处置能力
  • Python自动化办公:批量处理Word文档的实用技巧
  • 突破性升级:Windows Package Manager 1.8让软件管理效率提升300%
  • 全球AI范式变革与中国产业的破局路径
  • Vue大屏自适应组件v-scale-screen:解决企业级数据可视化适配难题
  • EdgeRemover:3步完成Microsoft Edge浏览器的高效卸载与重装指南
  • 开发智能体时,什么时候需要 RAG,什么时候不需要
  • 如何在Matlab中调用Taotoken聚合大模型API进行数据分析
  • 社媒运营做久了才会发现 真正让账号变强的往往不是爆款而是节奏一致性
  • 2026年PDF转PPT免费工具推荐:在线极速转换,省心又高效 - 时讯资讯
  • 洛雪音乐音源:打破音乐平台壁垒的聚合解决方案
  • 分布式系统开发实战:从核心原理到主流平台应用指南
  • Jetson Nano上OpenCV C++ DNN人脸检测:CUDA加速全流程实战
  • MySQL 8.0 新特性详解:从窗口函数到原子 DDL,这些功能你必须知道
  • VL53L8CX运动指示器实战:从原理到低功耗手势检测应用
  • RK3588开发环境搭建三步曲:从零构建嵌入式Linux编译与烧录系统
  • 西恩士液冷板清洁度检测设备/检测仪/分析系统,全链路一站式解决 - 工业设备研究社
  • 嵌入式离线地图导航:iMLite AI Map 2.1在智能穿戴设备中的实践
  • iOS 18.2深度体验:Siri融合ChatGPT、视觉智能与AIGC的AI交互革命
  • 基于gRPC反射的动态代理:无侵入实现HTTP/JSON与gRPC协议转换
  • 电机控制入门实战:从PWM调速到步进电机精准定位
  • 从NoHttpResponseException到线程泄漏:HttpClient配置不当引发的OOM事故复盘
  • CM1-DAY1题目总结
  • STM32MP1 M4内核定时器中断配置与调试实战