import requests
import json
requests.packages.urllib3.disable_warnings()
###原理:cpu、内存、存储分别使用不同的url获取到值,如url不一致只分别修改对应的第一个url即可,后面的详细参数的URL函数自动提取
class GetHostInfo(object):
def __init__(self,ipaddr,username,password):
self.ip=ipaddr.strip()
self.URLprefix='https://'+ipaddr.strip()
self.username=username.strip()
self.password=password.strip()
global token ##同时存在4-5个token链接,每个token链接时间为5分钟,可以自己设置。该token是在响应头获取到的,直接用到redfish认证的header中。
global CSRFToken ##该token是在响应的文本或json格式中获取到的,需要经过处理、加工后用到restfull认证的header中。
global cookie ##该cookie是在响应头获取到的,需要经过处理、加工后用到restfull认证的header中。
CSRFToken=0
cookie=0
token=0
tokenurl=self.URLprefix+'/redfish/v1/SessionService/Sessions'
print(tokenurl)
data={
"UserName":self.username,
"Password":self.password
}
header={
"Content-Type":"application/json"
}
re1=requests.post(tokenurl,json.dumps(data),headers=header,verify=False)
print (re1.status_code)
if re1.status_code == 201:
'''
1、X-Auth-Token:该token是在响应头获取到的,直接用到redfish认证的header中;
2、Set-Cookie:该cookie是在响应头获取到的,需要经过处理、加工后用到restfull或redfish认证的header中。
3、CSRFToken:该token是在响应的文本或json格式中获取到的,需要经过处理、加工后用到restfull认证的header中。
'''
print (re1.json())
print (re1.headers)
temp_header = re1.headers
cookie = temp_header['Set-Cookie']
token = temp_header['X-Auth-Token']
print('cookie_init', cookie)
print('token_init', token)
temp_text = re1.json()
CSRFToken = temp_text['CSRFToken']
print('CS