gitlab批量更改用户权限属性(关闭用户创建项目以及创建用户组)

需求

昨天在gitlab 服务器端更改了用户can_create_group这个属性,默认属性值是Ture,我们需要改为False,意思就是禁止用户创建项目组。
还有禁止创建个人项目等projects limit 这个属性。
修改服务器配置文件之后,创建新的用户,默认就不会带有创建项目组权限了。

问题

但是问题来了,之前创建好的用户,不会因为修改了服务端的配置而更改权限,需要人为手动去改

解决办法

写个脚本批量更改吧,排除一些不用修改的用户,比如管理员,或者自己,机器人,僵尸账号等。

pip install python-gitlab
#!/bin/python3

__autor__ = "chunk"
__date__ = "2022-05-10"

import gitlab
import logging
import sys


logging.basicConfig(
    level=logging.INFO,
    format="%(asctime)s [%(levelname)s] %(message)s",
    handlers=[
        logging.FileHandler("debug.log"),
        logging.StreamHandler(sys.stdout)
    ]
)
logging.debug('This message is skipped as a level is set as INFO')
logging.info('So should this')
logging.warning('And this, too')
logging.error('Testing non-ASCII character, Ø and ö')

url = 'https://gitlab.abc.com/'  # gitlab安装地址
private_token = '123456'  # gitlab 登录密钥 需自己设置

# 登录 获取gitlab操作对象gl
gl = gitlab.Gitlab(url, private_token)

# 获取第一页的用户列表 (返回[<User id:1>,<User id:2>])
# users = gl.users.list()
# log.info(users)
# 获取所有的用户列表
users = gl.users.list(all=True)
for a in users:
    if a.id != 1 and a.id != 2 and a.id != 23 and a.id !=13 and a.id !=4:
    # 修改用户属性权限
      logging.info("正在处理当前用户: {user}".format(user=a.username))
      a.can_create_group = False  
      a.projects_limit = 0
      a.save()
      logging.info("用户名:{a} ,名字: {b}, ID: {c}, projects limit: {d},允许创建组: {e}".format(a=a.username,b=a.name,c=a.id,d=a.projects_limit,e=a.can_create_group))
      

    # print(a.username)
    # print(a.name)
    # print(a.id)
    # print(a.projects_limit)
    # print(a.can_create_group)
# print(users)

# log.info(users)

# 创建用户
"""
常用参数:以下参数都可以使用user对象进行修改
email (必填)-电子邮件
username (必填)-用户名
name (必填)-名称
password (可选)-密码
can_create_group (可选)-用户可以创建组-正确或错误
skip_confirmation (可选)-跳过确认-正确或错误(默认)
external (可选)-将用户标记为外部用户-true或false(默认)
"""
# user = gl.users.create({'email': 'qinsh@qq.com',
#                         'password': 'qinsh123456',
#                         'username': 'qinsh',
#                         'name': '秦始皇'})

# 根据用户ID获取用户对象
# user = gl.users.get(1)
# 根据用户Git账号获取用户对象
# user = gl.users.list(username="qinsh")[0]

# # 根据用户对象可以进行如下操作
# username = user.username  # 获取用户Git账号
# name = user.name  # 获取用户姓名
# user_id = user.id  # 获取用户ID

# # 修改用户属性
# user.external = True  # 将用户标记为外部用户
# user.save()

# # 删除用户
# gl.users.delete(user_id)  # 根据用户ID进行删除
# user.delete()  # 根据用户对象直接进行删除

参考:
python gitlab获取用户信息、创建用户、修改用户及删除用户等操作

Getting started with the API

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

少陽君

谢谢老板的拿铁

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值