通过API读取云盘系统的系统信息数据,读取的数据可以用来每天给管理员通过微信、邮件等发送通知,了解系统基本情况。
下面读取系统的用户数,计算已分配的空间配额,读取实际已使用的存储空间,以及总文件数,并将信息发送到微信群:云盘-消息通知(微信发送程序需要额外实现)
#! /usr/bin/env python3
import json
import requests
from loguru import logger
# 导入logger记录日志
logger.add('/opt/logs/custom/get_user_count.log',
level='DEBUG',
format='{time:YYYY-MM-DD HH:mm:ss} - {level} - {file} - {line} - {message}',
rotation="10 MB")
headers = {
'cache-control': 'no-cache',
'content-type': 'application/json',
'charset': 'utf-8',
'indent': '4',
}
# seafile站点的URL,后面调用api会用到
url = 'https://example.com/'
# 微信发送程序的url
url_wechat = 'https://example.com/wechat'
# 管理员账户
data_admin = {
'username': 'admin-api@example.com',
'password': 'password',
}
RCV_USERS = {
'wechat': ['云盘-消息通知',]
}
# 使用管理员账号获取token
def get_admin_token():
url_token = url + 'api2/auth-token/'
response = requests.post(url_token, data=data_admin)
res = json.loads(response.text)
if res is None:
logger.warning("Get admin token failed")
else:
return res['token']
def get_admin_sysinfo():
# 管理后台系统信息的API
url_sysinfo = url + 'api/v2.1/admin/sysinfo/'
admin_token = get_admin_token()
# 将获取到的token放入请求的headers
headers['Authorization'] = 'Token ' + admin_token
response = requests.get(url_sysinfo, headers=headers)
res = json.loads(response.text)
return res
# 将读取到的信息发送给微信发送程序
def send_sms_wechat():
sys_info = get_admin_sysinfo()
user_count = sys_info['users_count']
total_quota = user_count * 50 # GB 每人50GB配额
total_storage = int(sys_info['total_storage']/1000/1000/1000) # GB 换算单位为1000
total_files_count = sys_info['total_files_count'] # 总文件数
content = '云盘系统信息' +\
'\n- 当前用户数:' + str(user_count) +\
'\n- 总配额空间(GB):' + str(total_quota) +\
'\n- 已用存储空间(GB):' + str(total_storage) +\
'\n- 存储文件数:' + str(total_files_count)
# 把消息发给列表中的所有微信用户
for user in RCV_USERS['wechat']:
response = requests.get(url_wechat, params={'to':user, 'msg':content})
logger.info("{} ---发送给: {} - 内容: {} -",response.text,user,content.replace('\n',''))
return
send_sms_wechat()