H3C设备服务器采集参数认证过程(包含鲑和res

  

该脚本针对H3C服务器分别对鲑和restful两种协议的认证方式进行测试,并合并。
有三个类,分别是鲑协议测试,restful协议测试,以及两个合并测试
文章最后使用<强>鲑模块简单进行认证访问测试。

  
 <代码>
  进口的要求
  进口json
  requests.packages.urllib3.disable_warnings ()
  
  “‘
  以下有三个类,分别是鲑协议测试,restful协议测试,以及两个合并测试。
  “‘
  
  # #鲑认证过程和获取参数
  类redfish_getinfo(对象):
  def __init__(自我,ipaddr,用户名、密码):
  self.ip=ipaddr.strip ()
  self.URLprefix=' https://' + ipaddr.strip ()
  self.username=username.strip ()
  self.password=password.strip ()
  全球的令牌
  令牌=0
  tokenurl=self.URLprefix +/鲑/v1/SessionService/会话的
  打印(tokenurl)
  data=https://www.yisu.com/zixun/{“用户名”:self.username,
  “密码”:self.password
  }
  头={
  “内容类型”:“application/json”
  }
  re1=requests.post (tokenurl json.dumps(数据),标题=头,验证=False)
  打印(re1.status_code)
  如果re1。status_code==201:
  print (redfish_info, re1.json ())
  打印(redfish_header, re1.headers)
  temp_header=re1.headers
  令牌=temp_header (“X-Auth-Token”)
  打印(“redfish_token”,令牌)
  其他:
  通过
  def redfish_info(自我,URL_suffix): #定义总获取函数,传参url的后半部分。如/鲑/v1/系统/1/内存的
  urlset=self.URLprefix + URL_suffix
  如果令牌!=0:
  头={
  “内容类型”:“application/json”,
  “X-Auth-Token”:令牌
  }
  re1=requests.get (urlset header=头,验证=False)
  #打印(re1.status_code)
  返回(re1.json ())
  其他:
  通过
  # # restful认证过程和获取参数
  类restfull_info(对象):
  def __init__(自我,ipaddr,用户名、密码):
  self.ip=ipaddr.strip ()
  self.username=用户名
  self.password=密码
  自我。URLprefix=' http://' + ipaddr.strip ()
  全球CSRFToken # #同时存在4 - 5个令牌链接,每个令牌链接时间为5分钟,可以自己设置。
  全球饼干
  CSRFToken=0
  饼干=0
  tokenurl=self.URLprefix +/api/会话的
  头={
  “接受”:“application/json、text/javascript */*;q=0.01”,
  “接受编码”:gzip、缩小,
  “接收语言”:应用,zh型;q=0.9,
  “连接”:“保活”,
  “内容长度”:“39”,
  “内容类型”:“应用程序/x-www-form-urlencoded;charset=utf - 8 ',
  “主机”:“+自我。ip +”,
  “起源”:“http://?自我。ip +”,
  “推荐人”:“http://?自我。ip + '/',
  “用户代理”:“Mozilla/5.0 (Windows NT 6.2;Win64;AppleWebKit x64)/537.36 (KHTML,像壁虎)Chrome/74.0.3729.131 Safari/537.36”,
  “X-Requested-With”:“XMLHttpRequest”
  }
  打印(tokenurl)
  data=https://www.yisu.com/zixun/{“用户名”:self.username,
  “密码”:self.password
  }
  re1=requests.post (tokenurl, data=https://www.yisu.com/zixun/data,标题=头,验证=False)
  打印(re1.status_code)
  如果re1。status_code==200:
  #打印(re1.json ())
  #打印(re1.status_code)
  #打印(re1.json ())
  #打印(的头:“re1.headers)
  # temp=re1.json ()
  #打印(临时[' CSRFToken '])
  打印(re1.headers)
  print (re1.json ())
  temp_header=re1.headers
  饼干=temp_header (set - cookie的)
  temp_token=re1.json ()
  CSRFToken=temp_token (“CSRFToken”)
  打印(restfull_cookie,饼干)
  打印(restfull_CSRFToken, CSRFToken)
  其他:
  通过
  def restfull_info(自我,URL_suffix): #定义总获取函数,传参url的后半部分。如/鲑/v1/系统/1/内存的
  urlset=自我。URLprefix + URL_suffix.strip ()
  #打印(urlset)
  #打印(“令牌:“令牌)
  #打印(cookie:,饼干)
  如果饼干!=0和令牌!=0:
  库克=cookie.split (“;”) [0] .split ("=") [1]
  打印(restfull_cook,库克)
  头={
  “接受”:“application/json、text/javascript */*;q=0.01”,
  “接受编码”:gzip、缩小,
  “接收语言”:应用,zh型;q=0.9,
  “连接”:“保活”,
  “饼干”:“refresh_disable=1;QSESSIONID=+库克+”,
  “主机”:“+ self.ip +”,
  “推荐人”:“http://? self.ip + '/',
  “用户代理”:“Mozilla/5.0 (Windows NT 6.2;Win64;AppleWebKit x64)/537.36 (KHTML,像壁虎)Chrome/74.0.3729.131 Safari/537.36”,
  “X-CSRFTOKEN”:“+ CSRFToken +”,
  “X-Requested-With”:“XMLHttpRequest”
  }
  re1=requests.get (urlset header=头,验证=False)
  打印(re1.status_code)
  返回(re1.json ())
  其他:
  通过
  
  # #合并restful与鲑为一个类。
  类GetHostInfo(对象):
  def __init__(自我,ipaddr,用户名、密码):
  self.ip=ipaddr.strip ()
  self.URLprefix=' https://' + ipaddr.strip ()
  self.username=username.strip ()
  self.password=password.strip ()
  全球redfish_token
  全球restfull_CSRFToken
  全球restfull_cookie
  restfull_CSRFToken=0
  restfull_cookie=0
  redfish_token=0 # #该令牌是加密的
  # #以下是鲑的认证过程
  redfishurl=self.URLprefix +/鲑/v1/SessionService/会话的
  打印(redfishurl)
  data=https://www.yisu.com/zixun/{“用户名”:self.username,
  “密码”:self.password
  }
  头={
  “内容类型”:“application/json”
  }
  re1=requests.post (redfishurl json.dumps(数据),标题=头,验证=False)
  打印(re1.status_code)
  如果re1。status_code==201:
  print (redfish_info, re1.json ())
  打印(redfish_header, re1.headers)
  temp_header=re1.headers
  redfish_token=temp_header (“X-Auth-Token”)
  打印(redfish_token, redfish_token)
  其他:
  通过
  # #以下是restful的认证过程
  restfullurl=自我。URLprefix +/api/会话的
  restheaders={
  “接受”:“application/json、text/javascript */*;q=0.01”,
  “接受编码”:gzip、缩小,
  “接收语言”:应用,zh型;q=0.9,
  “连接”:“保活”,
  “内容长度”:“39”,
  “内容类型”:“应用程序/x-www-form-urlencoded;charset=utf - 8 ',
  “主机”:“+自我。ip +”,
  “起源”:“http://?自我。ip +”,
  “推荐人”:“http://?自我。ip + '/',
  “用户代理”:“Mozilla/5.0 (Windows NT 6.2;Win64;null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null

H3C设备服务器采集参数认证过程(包含鲑和res