Nextcloud批量添加用户-官方API版本

背景说明

过了一段时间以后,因为要给OJ添加网盘的缘故,我在官方的文档里面竟然找到了管理用户的API,可以直接发送请求而不需要获取Cookies,文档的地址如下 :https://docs.nextcloud.com/server/10.0/admin_manual/configuration_user/user_provisioning_api.html
为此我重新写了一份python代码,除了可以批量添加和删除用户,还可以批量设置用户的组别,即使高一年级分班,也可以继续使用旧的账号,资料也不必删除。

Python代码

本代码实现了用户的添加、删除,修改用户分组,具体内容如下:

from re import findall
from urllib.request import urlopen
import os,requests
import json
import time

def getTxtInfo(filename):
   with open(filename, "r") as f:
    data = f.readline()
   return data

url=getTxtInfo("url.txt")
ocs="true"
headers = {
     
  'OCS-APIRequest': 'true',
    }
select=1
print("请选择对应编号执行相关操作:")
print("1.添加用户")
print("2.重新设置用户的分组")
print("3.删除用户")
select=int(input("请输入编号:"))
user_body={
     "userid":"userid","password":"123456","displayName":"张三丰","email":"[email protected]","groups":["class01"],"subadmin":[],"quota":"100MB","language":"zh_CN"}
group_body={
     "groupid":"groupname"}
cnt=0
with open("users.csv", "r", encoding='UTF-8') as f:
    for line in f.readlines():
        line = line.strip('\n')  #去掉列表中每一个元素的换行符
        cnt=cnt+1
        if cnt==1:
           continue
        
        temp=line.split(",")
        name=temp[0]
        old_class=temp[1]
        new_class=temp[2]
        username=temp[3]
        email=temp[4]
        passwd=temp[5]
        quota=temp[6]
        
        if select==1:
           user_body["displayName"]=name
           user_body["groups"][0]=new_class
           user_body["userid"]=username
           user_body["email"]=email
           user_body["password"]=passwd
           user_body["quota"]=quota
    
           response  = requests.post(url, json = user_body, headers =headers)
           if response.text.find("ok")>1:
               print(user_body["userid"]+" 添加用户成功!")
           else :
               print(user_body["userid"]+" 添加用户失败...")
              # print (response.text)

        if select==2:
            group_body["groupid"]=old_class
            response=requests.delete(url+'/'+username+'/groups',json=group_body,headers=headers)
            
            if response.text.find("ok")>1:
               print(username+" 从分组:"+old_class+"移除成功!")
            else :
               print(username+" 从分组:"+old_class+"移除失败!")
               #print(response.text)
            group_body["groupid"]=new_class
            
          # print(url+username+'/'+old_class)
            response=requests.post(url+'/'+username+'/groups',json=group_body,headers=headers) 
            if response.text.find("ok")>1:
               print(username+" 添加到分组:"+new_class+"成功!")
            else :
               print(username+" 添加到分组:"+old_class+"失败!")
               #print(response.text)

        if select==3:
            response=requests.delete(url+'/'+username,json=group_body,headers=headers)
            if response.text.find("ok")>1:
               print(" 删除用户:"+username+"成功!")
            else :
               print("删除用户:"+username+"失败!")

代码使用说明:

1.设置请求地址
代码中的变量url表示请求的链接,请求格式为

http://admin:[email protected]/ocs/v1.php/cloud/users

要将链接中的管理员账号和密码,请求的地址换成自己的,然自己新建一个“url.txt”,将请求的地址保存到里面,如果不想从文件中获取请求地址,也可以直接在代码

url=getTxtInfo(“url.txt”)

中修改。
2.用excel新建一个表格,填写内容完成后保存为“users.csv”到,保存的目录和运行程序一个目录,表格的第一行内容不用修改
Nextcloud批量添加用户-官方API版本_第1张图片

你可能感兴趣的:(工具)