学习笔记:基于python的JumpServer api自动化操作开发

jumpserver api认证方法文档:API 文档 - JumpServer 文档

api文档:http://jumpserver地址(可能要端口号)/api/docs

领导要求把jumpserver、prometheus之类的新加入设备的操作都给自动化了,然后整合到公司的网页上。先在自己虚拟环境整个jumpserver环境用来测试:(安装过程略)

首先使用token连接上jumpserver并尝试用get方法获取用户列表(用例来自官方文档)

import requests, json

def get_token(jms_url, username, password):
    url = jms_url + '/api/v1/authentication/auth/'
    query_args = {
        "username": username,
        "password": password
    }
    response = requests.post(url, data=query_args)
    return json.loads(response.text)['token']

def get_user_info(jms_url, token):#获取所有jumpserver用户
    url = jms_url + '/api/v1/users/users/'
    headers = {
        "Authorization": 'Bearer ' + token,
        'X-JMS-ORG': '00000000-0000-0000-0000-000000000002'
    }
    response = requests.get(url, headers=headers)
    print(json.loads(response.text))


if __name__ == '__main__':
    jms_url = 'https://192.168.80.129:80'#jumpserver地址
    username = 'user1'#jumpserver管理员的用户名和密码
    password = '123456'
    token = get_token(jms_url, username, password)
    get_user_info(jms_url, token)

如果出现错误[SSL: WRONG_VERSION_NUMBER] wrong version number (_ssl.c:1125),修改url为http;如果出现“由于目标计算机积极拒绝,无法连接”,url加一下端口号,默认80或443。

由于本用例请求用户列表,只要发送get请求即可,无需发送数据,自然无需标注数据类型。

然后尝试用post方法添加jumpserver用户

def create_user(jms_url, token):
    url = jms_url + '/api/v1/users/users/'
    headers = {
        "Authorization": 'Bearer ' + token,
        'X-JMS-ORG': '00000000-0000-0000-0000-000000000002',
        'accept': 'application/json',
        'Content-Type': 'application/json'
    }#加上传参类型accept和Content-Type

    data={
  "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "name": "string",
  "username": "string",
  "password": "string",
  "public_key": "string",
  "email": "user@example.com",
  "wechat": "string",
  "phone": "string",
  "mfa_level": 0,
  "source": "local",
  "need_update_password": False,
  "is_active": True,
  "date_expired": "2022-08-19T07:53:50.650Z",
  "comment": "string",
  "role": "User",
  "groups": [
    "915922ca-6106-40c3-8b46-54bc7bbc0f23"
  ],
  "org_roles": [
    "Admin"
  ],
  "password_strategy": "email"
}
#groups应为预设好存在的组的id,样例json中true和false在字典中记得大写
    data_json = json.dumps(data)
    response = requests.post(url,data_json, headers=headers)
    print(response.text)

1.id和groups的编码是有格式要求的,groups需要已经创建好的,可以去ui界面去查(1.5没有,需要在ui界面看url后面带的参数或者用api获取)而id不是必须项,可以删掉,让系统自己生成;实际上只需要留必须的几项就可以成功创建。

传参json格式参考api文档。

经过测试,用户列表里确实多了个用户,说明api可用,测试成功。下面面向公司jumpserver进行开发。

一个注意点:我的环境是2.6最新版,但是公司是1.5,差有点多;好在各个版本都自带api文档。(渴望一份各个api操作的详细解读)

现在要在脚本中完成的步骤:添加新资产(资产名称,ip,系统基本都是linux,管理用户都是root,节点需要前端来选择)-》资产授权(名称,资产,节点,系统用户为固定的几个,动作全选)

首先找到添加资产的api        #有一说一,jumpserver应该是所有的操作都能用api完成,可是这一大面英文指标想找个啥太难了,不过感谢这位的文章,参照下找到添加资产的api:/assets/assets/

Jumpserver通过API自动添加资产-

tips:在把操作写进程序之前,可以在api文档中进行简单测试

 自己调整参数,看运行的结果,相当方便,然后整合进代码就可以了。

添加资产

def create_assest(jms_url, token):
    url = jms_url + '/api/v1/assets/assets/'
    headers = {
        "Authorization": 'Bearer ' + token,
        'X-JMS-ORG': '00000000-0000-0000-0000-000000000002',
        'accept': 'application/json',
        'Content-Type': 'application/json'
    }

    data={
  "ip": "192.168.100.71",
  "hostname": "test_kvm71",
  "platform": "Linux",
  "is_active": True,
  "admin_user": "5635e492-bb0b-4aaf-94d1-b2b0cf16c616",
  "nodes": [
    "0fad765c-8965-4db2-9fd0-5bd2b83a2e91"
  ]

}
    data_json = json.dumps(data)
    response = requests.post(url,data_json, headers=headers)
    print(response.text)

添加授权规则

def permission(jms_url, token):
    url = jms_url + '/api/v1/perms/asset-permissions/'
    headers = {
        "Authorization": 'Bearer ' + token,
        'X-JMS-ORG': '00000000-0000-0000-0000-000000000002',
        'accept': 'application/json',
        'Content-Type': 'application/json'
    }

    data={
  "actions": [
    "all"
  ],
  "name": "test4-kvm71",
  "is_active": True,
  "date_start": "2022-08-23T01:32:06.560Z",
  "date_expired": "2092-08-23T01:32:06.560Z",
  "users": [
    "3bee8208-879f-46a5-a004-9e2a739e2592"
  ],
  "assets": [
    "0cdc877d-fbb7-4e7c-af2d-2e8def6120ed"
  ],
  "system_users": [
    "1ae8d4da-1a4a-4dcc-a7a6-30a2be738044"
}
    data_json = json.dumps(data)
    response = requests.post(url,data_json, headers=headers)
    print(response.text)

然后就可以登录了。

我的1.5版本jumpserver有个大问题:创建好了资产、授权规则在前端显示不出来,但实际上能够登录资产,说明已经添加进数据库,但是前端未加载。这个问题在查验数据库之后得到了解决,罪魁祸首就是'X-JMS-ORG': '00000000-0000-0000-0000-000000000002'这个字段,1.5版本的其他资产都没有这个字段,改成空的就行了。但是在新版本里是没有问题的。

  • 13
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
要基于Python和Flask建立一个学习笔记系统,你可以按照以下步骤进行: 1. 安装Python和Flask:首先,确保你的计算机上安装了Python。然后,使用pip命令安装Flask框架。在命令行中执行以下命令: ``` pip install Flask ``` 2. 创建Flask应用:在你选择的目录下创建一个新的文件夹,用于存放你的应用程序。进入该文件夹,并创建一个名为app.py的Python脚本文件。 3. 导入依赖:在app.py文件中,导入必要的模块和库: ```python from flask import Flask, render_template, request ``` 4. 初始化Flask应用:在app.py文件中,初始化Flask应用: ```python app = Flask(__name__) ``` 5. 创建路由和视图函数:根据你的学习笔记系统的需求,创建不同的路由和对应的视图函数。例如,你可以创建一个用于显示学习笔记列表的路由: ```python @app.route('/notes') def notes(): # 在这里编写代码来获取学习笔记列表,并将其传递给模板 return render_template('notes.html', notes=notes_list) ``` 6. 创建模板:在你的应用程序文件夹中创建一个名为templates的文件夹,并在其中创建一个名为notes.html的模板文件。在模板文件中,你可以使用Flask提供的模板语法来显示学习笔记列表: ```html <h1>学习笔记列表</h1> <ul> {% for note in notes %} <li>{{ note }}</li> {% endfor %} </ul> ``` 7. 运行应用:在命令行中,使用以下命令运行你的应用: ``` python app.py ``` 现在,你的基于Python和Flask的学习笔记系统就可以运行了。你可以根据需要添加更多的路由和视图函数,以及其他功能如添加、编辑和删除学习笔记等。同时,你可以探索Flask的文档和教程,以深入了解如何构建更复杂的应用程序。祝你成功!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值