jumpserver api

domain+/api/docs

python

import requests, jsonjms_url = 'http://jumpserver.xixxxshu.com'token = 'exxxxxxxxxxxxxxxxxxxxxxxxx'headers = {    "Authorization": 'Token ' + token,    "Content-Type": "application/json",    "Accept": "application/json",    'X-JMS-ORG': '4xxxxxxxxxxxxxxxxxxxxxxxxxxxx'}# 获取所有用户def get_user_all():    url = jms_url + '/api/v1/users/users/'    response = requests.get(url, headers=headers)    user_list = json.loads(response.text)    count = 1    # print(user_list)    for i in user_list:        count += 1        print(i)    print(count)## # 获取监控指标# def get_prometheus_metric():#     url = jms_url + "/api/v1/prometheus/metrics/"#     response = requests.get(url, headers=headers)#     print(response.text)#     return response.text# 获取所有资产节点def get_node_all():    url = jms_url + "/api/v1/assets/nodes/"    response = requests.get(url, headers=headers)    node_list = json.loads(response.text)    count = 1    for i in node_list:        count += 1        print(i)    print(count)    return response.json()# 查看以后token(即admin)的所有资产def get_asset_all():    url = jms_url + "/api/v1/assets/assets/"    response = requests.get(url, headers=headers)    node_list = json.loads(response.text)    count = 1    for i in node_list:        count += 1        print(i)    print(count)    return response.json()#################################################################################################### 创立资产节点def assets_nodes_create(node_name):    node_data = {        "value": node_name    }    url = jms_url + "/api/v1/assets/nodes/"    node_info = get_node_info(node_name)    if node_info:  # 依据node_name去查问,如果查到了阐明曾经有了。        print("{name}已存在, id: {id}".format(name=node_name, id=node_info[0]["id"]))    else:        data = json.dumps(node_data)        resp = requests.post(url, headers=headers, data=data)        return resp.json()def get_assets_list_by_ip(ip):    url = jms_url + "/api/v1/assets/assets/"    response = requests.get(url, headers=headers, params={        "ip": ip    })    return response.json()# 查看资产节点信息def get_node_info(node_name):    url = jms_url + "/api/v1/assets/nodes/"    response = requests.get(url, headers=headers, params={        "value": node_name    })    print(response.text)    return response.json()def asset_create(ip, hostname, node_id, comment):    asset_Data = {        "ip": ip,        "hostname": hostname,        "platform": "Linux",        "protocol": "ssh",        "port": 22,        "is_active": True,        "nodes": [            node_id        ],        "org_id": "4xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",        "org_name": "Ownerx辰",        "comment": comment    }    url = jms_url + "/api/v1/assets/assets/"    data = json.dumps(asset_Data)    response = requests.post(url, headers=headers, data=data)    print(json.loads(response.text))# 运行创立服务器资产def run_create_assets(node_name, project_name, ip, comment):    # 节点id,无节点时创立节点    node_info = get_node_info(node_name)    if len(node_info) == 0:        node_id = assets_nodes_create(node_name)    else:        node_id = node_info[0]["id"]    # 治理用户 id    hostname = "{ip}_{project_name}".format(ip=ip, project_name=project_name)    # 查IP,创立资产    ip_info = get_assets_list_by_ip(ip)    if ip_info:        print("%s 已存在,nodes: %s" % (ip_info[0]["ip"], ip_info[0]["nodes"]))    else:        asset_create(ip, hostname, node_id, comment)#run_create_assets("Ownerx辰", "xxxx", "10xx.xx.xx9", "测试")def get_org_info():    url = jms_url + "/api/v1/orgs/orgs/"    response = requests.get(url, headers=headers)    org_list = response.text    print(org_list)    for i in org_list.split("id"):        print(i)    return response.json()def get_user_gorup():    url = jms_url + "/api/v1/xpack/cloud/accounts/"    response = requests.get(url, headers=headers)    for i in response.text.split(","):        print(i)    # print(response.text)    return response.json()

GO

package mainimport (    "bytes"    "encoding/json"    "fmt"    "io/ioutil"    "log"    "net/http")const (    JmsServerURL = "http://juxxxxxxxxxxxxxxngshu.com"    JMSToken     = "exxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxb"    ORG          = "4xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx96" // ORG myself)type JumpServerCreateJson struct {    Ip       interface{}   `json:"ip"`    Hostname interface{}   `json:"hostname"`    Platform string        `json:"platform"`    Protocol string        `json:"protocol"`    Port     int           `json:"port"`    IsActive interface{}   `json:"is_active"`    Nodes    []interface{} `json:"nodes"`    OrgId    string        `json:"org_id"`    OrgName  string        `json:"org_name"`    Comment  interface{}   `json:"comment"`}func GetOrgList(jmsurl, token string) {    url := jmsurl + "/api/v1/orgs/orgs/"    client := &http.Client{}    req, err := http.NewRequest("GET", url, nil)    req.Header.Add("Authorization", "Token "+token)    req.Header.Add("X-JMS-ORG", ORG)    resp, err := client.Do(req)    if err != nil {        log.Fatal(err)    }    defer resp.Body.Close()    body, err := ioutil.ReadAll(resp.Body)    if err != nil {        log.Fatal(err)    }    fmt.Println(string(body))}func GetNodeInfo(jmsUrl string, token string, nodeName string, org string) {    uri := jmsUrl + "/api/v1/assets/nodes/?value=" + nodeName    client := &http.Client{}    req, err := http.NewRequest("GET", uri, nil)    req.Header.Add("Authorization", "Token "+token)    req.Header.Add("X-JMS-ORG", org)    resp, err := client.Do(req)    if err != nil {        log.Fatal(err)    }    defer resp.Body.Close()    body, err := ioutil.ReadAll(resp.Body)    if err != nil {        log.Fatal(err)    }    fmt.Println(string(body))}func GetAssetsInfo(jmsUrl string, token string, ip string) {    uri := jmsUrl + "/api/v1/assets/assets/?ip=" + ip    client := &http.Client{}    req, err := http.NewRequest("GET", uri, nil)    req.Header.Add("Authorization", "Token "+token)    req.Header.Add("X-JMS-ORG", ORG)    resp, err := client.Do(req)    if err != nil {        log.Fatal(err)    }    defer resp.Body.Close()    body, err := ioutil.ReadAll(resp.Body)    if err != nil {        log.Fatal(err)    }    fmt.Println(string(body))}func CreateAsset(jmsUrl string, token string, ip string, homeName string, comment string, platform string, nodeId string, orgId string, orgName string) {    bodyJson := `{        "ip": "10.2x3.1x.2x1",        "hostname": "hostname",        "platform": "Linux",        "protocol": "ssh",        "port": 22,        "is_active": True,        "nodes": [            "node_id"        ],        "org_id": "4xxxxxxxxxxxxxxxxxxxxxx6",        "org_name": "Ownxxxx",        "comment": "comment"    }`    var j JumpServerCreateJson    err := json.Unmarshal([]byte(bodyJson), &j)    if err != nil {        fmt.Println("err is %v: ", err)    }    j.Ip = ip    j.OrgId = orgId    j.Comment = comment    j.Hostname = homeName    j.OrgName = orgName    j.Nodes = []interface{}{nodeId}    if platform == "Linux" {        fmt.Println("Linux ,body Wie ist")    } else {        j.Port = 3389        j.Protocol = "rdp"        j.Platform = "Windows"        fmt.Println("Windows ,body change")    }    data, err := json.Marshal(j)    if err != nil {        fmt.Println("err was %v", err)    }    fmt.Println(string(data))    reader := bytes.NewReader(data)    uri := jmsUrl + "/api/v1/assets/assets/"    client := &http.Client{}    req, err := http.NewRequest("POST", uri, reader)    req.Header.Add("Authorization", "Token "+token)    req.Header.Add("X-JMS-ORG", orgId)    resp, err := client.Do(req)    if err != nil {        log.Fatal(err)    }    defer resp.Body.Close()    body, err := ioutil.ReadAll(resp.Body)    if err != nil {        log.Fatal(err)    }    fmt.Println(string(body))}func main() {    //GetOrgList(JmsServerURL, JMSToken)    //GetNodeInfo(JmsServerURL, JMSToken, "Ownxxx", "1xxxxxxxxxxxxxxxxxxxxxxxxxxxxe")    //GetAssetsInfo(JmsServerURL, JMSToken, "10.2x.1x1.xx9")}