-
Notifications
You must be signed in to change notification settings - Fork 8
Expand file tree
/
Copy pathgetLanSwitchCPU.py
More file actions
80 lines (58 loc) · 2.24 KB
/
getLanSwitchCPU.py
File metadata and controls
80 lines (58 loc) · 2.24 KB
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
66
67
68
69
70
71
72
73
74
75
76
77
78
import http.client
import ssl
import base64
import string
import json
__author__ = "Louis Jia"
__copyright__ = "Copyright (C) 2018 Cisco System"
def getRestToken(username, password, serverip):
ssl._create_default_https_context = ssl._create_unverified_context
##replace server ip address here
conn = http.client.HTTPSConnection(serverip)
payload = "{\"expirationTime\" : 10000000000}\n"
## replace user name and password here
authenStr="%s:%s" % (username, password)
base64string = base64.encodestring(bytes(authenStr, 'utf-8'))
tmpstr= "Basic %s" % base64string
authorizationStr = tmpstr.replace("b\'","").replace("\\n\'","");
print(authorizationStr);
headers = {
'content-type': "application/json",
'authorization': authorizationStr,
'cache-control': "no-cache"
}
conn.request("POST", "/rest/logon", payload, headers)
res = conn.getresponse()
data = res.read()
print(data)
longstr=data.decode("utf-8")
strArr=longstr.split("\"")
return strArr[3]
def getSwitchCPU(serverip, switchname, resttoken):
ssl._create_default_https_context = ssl._create_unverified_context
conn = http.client.HTTPSConnection(serverip)
headers = {
'dcnm-token': resttoken,
'content-type': "application/x-www-form-urlencoded",
'cache-control': "no-cache"
}
conn.request("GET", "/fm/fmrest/statistics/cpuStatES?interval=Day&navId=-1", headers=headers)
res = conn.getresponse()
data = res.read()
jsonstr=data.decode("utf-8")
decoded = json.loads(jsonstr)
for x in decoded :
if ( x['entityName'] == switchname ) :
print('switchname:'+ switchname + ' avg CPU:' + x['avgTxStr'] + ' min CPU:' +x['minTxStr']+ ' max CPU:' +x['maxTxStr'])
getCPUDataURL='/fm/fmrest/statistics/pmChartData?rrdFile='+x['rrdFile']+'&pmType=15&fid='+str(x['fid'])+'&interval=1&navId=-1'
conn.request("GET", getCPUDataURL, headers=headers)
cpures=conn.getresponse()
cpudata=cpures.read()
print('Details:')
print(cpudata.decode("utf-8"))
return
# DCNM username, password, DCNM server ip address
restToken=getRestToken("admin", "xxxxxx", "172.22.31.146")
print(restToken)
# DCNM server ip, device name, resetTotken
getSwitchCPU("172.22.31.146", "leaf-91",restToken)