工作中,发现多个提供者被禁用,fsp个数多个62个,手动一个个启动,实在浪费时间,因此,脚本解决该痛点

功能:

1、支持多个提供者启动

2、支持无fsp提供者提示

脚本如下:

  1 import base64
  2 import json
  3 import requests
  4
  5 def get_fsp(name, count):
  6     r = {
  7         "uid": "",
  8          "token": "",
  9         "nickname": "",
 10         "r": 0.577604849553434,
 11         "name": name,
 12         "start": 0,
 13         "limit": count,
 14         "sortname": "",
 15         "sortorder": ""
 16     }
 17     r = json.dumps(r)
 18     # base64加密
 19     bre = str(base64.b64encode(r.encode("utf-8")), "utf-8")
 20     url = "http://xxx/fsp/register/service/query?"
 21     total_url = url + bre
 22     res = requests.get(total_url)
 23     bbs = str(base64.b64decode(res.text), "utf-8")
 24     bs = json.loads(bbs)
 25     fsp_rows = bs['data']['rows']
 26     if len(fsp_rows) == 0:
 27         print("该关键词下没有相关fsp,请输入正确的搜索关键词")
 28     return fsp_rows
 29
 30 def get_fsp_count(name):
 31     r = {
 32         "uid": "",
 33          "token": "",
 34         "nickname": "",
 35         "r": 0.577604849553434,
 36         "name": name,
 37         "start": 0,
 38         "limit": 162,
 39         "sortname": "",
 40         "sortorder": ""
 41     }
 42     r = json.dumps(r)
 43     # base64加密
 44     bre = str(base64.b64encode(r.encode("utf-8")), "utf-8")
 45     url = "http://xxx/fsp/register/service/query?"
 46     total_url = url + bre
 47     res = requests.get(total_url)
 48     bbs = str(base64.b64decode(res.text), "utf-8")
 49     bs = json.loads(bbs)
 50     count = bs['data']['count']
 51     return count
 52
 53
 54 def get_fsp_name(namelist):
 55     fsp_name_list = []
 56     for i in namelist:
 57         fsp_name_list.append(i['name'])
 58     return fsp_name_list
 59
 60 def update_config(name, providerAddress):
 61     r = {
 62         "uid": "xxx",
 63         "token": "",
 64         "nickname": "xxx",
 65         "r": 0.050240422960323716,
 66         "name": name,
 67         "providerAddress": providerAddress,
 68         "forbidOper": 1
 69     }
 70     r = json.dumps(r)
 71     # base64加密
 72     bre = str(base64.b64encode(r.encode("utf-8")), "utf-8")
 73     url = "http://xxx/fsp/register/provider/config"
 74     total_url = url
 75     res = requests.post(total_url, data=bre)
 76     bbs = str(base64.b64decode(res.text), "utf-8")
 77     json_data = json.loads(bbs)
 78     if json_data['errorCode'] == 590000:
 79         print(name + '更新成功')
 80     return True
 81
 82
 83 def check_ableFlag(name):
 84     r = {
 85       "uid": "201030",
 86       "token": "",
 87       "nickname": "",
 88       "r": 0.7631927389548474,
 89       "name": name,
 90       "start": 0,
 91       "limit": 10,
 92       "sortname": "",
 93       "sortorder": ""
 94     }
 95     r = json.dumps(r)
 96     # base64加密
 97     bre = str(base64.b64encode(r.encode("utf-8")), "utf-8")
 98     url = "http://xxx/fsp/register/service/address/query?"
 99     total_url = url + bre
100     res = requests.get(total_url, data=bre)
101     bbs = str(base64.b64decode(res.text), "utf-8")
102     bs = json.loads(bbs)
103     # 提供者个数
104     provider_num = len(bs['data']['rows'])
105     provider_af_pa =[]
106     if provider_num == 0:
107         print(name + '该fsp没有提供者')
108     else:
109         for i in range(provider_num):
110             ableFlag = bs['data']['rows'][i]['ableFlag']
111             providerAddress = bs['data']['rows'][i]['providerAddress']
112             r = dict(ableFlag=ableFlag, providerAddress=providerAddress)
113             provider_af_pa.append(r)
114     return provider_af_pa
115
116 def exe(key):
117     # 获取fsp个数
118     count = get_fsp_count(key)
119     # 获取fsp列表
120     name = get_fsp(key, count)
121     # fsp name列表
122     name_list = get_fsp_name(name)
123     for name in name_list:
124         # <class 'dict'>: {'ableFlag': 0, 'providerAddress': 'xxx:10310'}
125         pv_list = check_ableFlag(name)
126         for j in range(len(pv_list)):
127             ableFlag = pv_list[j]['ableFlag']
128             pa = pv_list[j]['providerAddress']
129         # labelflag==1是被禁用了,想启用的话"forbidOper": 1
130             if ableFlag == 1:
131                 res = update_config(name, pa)
132                 if res:
133                     print(name + ' 已被启用')
134             else:
135                 print(name + ' 该fsp已启动')
136
137
138 if __name__ == '__main__':
139     import sys
140     if len(sys.argv) != 2:
141         print("usage: python " + sys.argv[0] + " fsp.py xxx")
142     else:
143         exe(sys.argv[1])
01-15 09:48