-
Notifications
You must be signed in to change notification settings - Fork 24
/
cmdb_api.py
65 lines (56 loc) · 2.04 KB
/
cmdb_api.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2018/12/7 10:24
# @Author : Fred Yang
# @File : cmdb_api.py
# @Role : CMDB API
import pyotp
import requests
import json
from settings import api_gw, cmdb_info
class CMDB_API():
def __init__(self):
self.url = api_gw
self.user = cmdb_info.get('user')
self.pwd = cmdb_info.get('password')
self.key = cmdb_info.get('key')
@property
def get_mfa(self):
t = pyotp.TOTP(self.key)
return t.now()
def login(self):
try:
headers = {"Content-Type": "application/json"}
params = {"username": self.user, "password": self.pwd, "dynamic": self.get_mfa}
result = requests.post('%s/accounts/login/' % self.url, data=json.dumps(params), headers=headers)
ret = json.loads(result.text)
if ret['code'] == 0:
print(ret['auth_key'])
return ret['auth_key']
else:
print(ret)
print(ret['msg'])
exit(1)
except Exception as e:
print('[Error:] CMDB用户登陆失败,错误信息:{}'.format(e))
def get_ec2_info(self, publish_host_api):
"""
获取主机信息
:param publish_host_api: 前端传来
:return:
"""
token = self.login()
try:
# res = requests.get('%s/cmdb/api/cmdb/server_list/' % self.url, params=params, cookies=dict(auth_key=token))
res = requests.get('{}'.format(publish_host_api), cookies=dict(auth_key=token))
print('CMDB_API request Status:{}'.format(res.status_code))
# ret = str(res.content,'utf-8') py3
ret = str(res.text)
data = json.loads(ret)
return data
except Exception as e:
print('[Error:] CMDB获取机器信息失败,错误信息:{}'.format(e))
exit(-2)
# if __name__ == '__main__':
# obj = CMDB_API()
# obj.login()