# jumpserver_sync
**Repository Path**: ccq/jumpserver_sync
## Basic Information
- **Project Name**: jumpserver_sync
- **Description**: 基于jumpserver堡垒机,动态获取指定tag的阿里云主机,注册进资产
- **Primary Language**: Python
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2025-12-21
- **Last Updated**: 2025-12-22
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# jumpserver_sync
基于jumpserver堡垒机,动态获取指定tag的阿里云主机,注册进资产
## 核心思路
```
flowchart LR
A[定时启动] --> B
subgraph B [步骤1: 查询阿里云]
B1[调用阿里云API] --> B2[筛选特定标签
Project=WaterNetworkAI]
B2 --> B3[提取DSW实例ID与IP]
end
B --> C{资产存在?}
C -- 是 --> D[步骤2: 更新资产
调用JumpServer更新API]
C -- 否 --> E[步骤3: 创建资产
调用JumpServer创建API]
D --> F[同步完成]
E --> F
```
## 文件结构
```
/opt/jumpserver_sync/
├── jumpserver_api_demo.py # API认证基础模块
├── ecs_tag_query_v1.py # 阿里云ECS查询器
├── dsw_hybrid_query.py # 混合查询器 (已适配DSW API)
├── asset_sync.py # 资产同步器
├── unified_sync_manager.py # 主执行脚本
├── .env # 配置文件 (务必保密!)
├── logs/ # 日志目录 (自动创建)
└── requirements.txt # 依赖清单
```
### 配置文件 (.env)
** 请务必替换为自己实际的信息 **
```ini
# ----- 阿里云配置 -----
# 用于查询实例的RAM子账号密钥
ALI_ACCESS_KEY_ID =
ALI_ACCESS_KEY_SECRET =
# 我的工作区是杭州,请按自己的工作区填写
ALI_REGION_ID = cn-hangzhou
# 从DSW实例信息中获得PAI的工作空间id
ALI_WORKSPACE_ID=530124
# 用于筛选实例的标签
INSTANCE_TAG_KEY = Project
INSTANCE_TAG_VALUE = WaterNetworkAI
# ----- JumpServer配置 -----
# 与 jumpserver_api_demo.py 配置一致
JMS_URL = http://192.168.1.109
# 在JumpServer个人信息的`API Key`创建
JMS_ACCESS_KEY_ID =
JMS_ACCESS_KEY_SECRET =
# 资产默认属性 (根据实际情况修改)
# 节点ID可在JumpServer"资产管理-资产节点"中,点击节点右侧的“.../查看”获取
JMS_DEFAULT_NODE_ID =
```
## 使用
```bash
# 在堡垒机上安装所有Python依赖
cd /opt/jumpserver_sync
pip3 install -r requirements.txt
# 1. 手动执行一次,观察完整输出
cd /opt/jumpserver_sync
python3 unified_sync_manager.py
# 2. 查看详细日志
tail -f logs/sync_service.log
```
### 定时任务
```bash
# 编辑当前用户的crontab
crontab -e
# 添加以下行(注意使用完整路径)
*/5 * * * * cd /opt/jumpserver_sync && /usr/bin/python3 /opt/jumpserver_sync/unified_sync_manager.py >> /opt/jumpserver_sync/logs/cron.log 2>&1
# 保存后验证crontab配置
crontab -l
```