shell通过gitlab api添加删除用户

电玩女神 2022-12-26 00:47 375阅读 0赞

导语:打算在运维平台上添加一个gitlab 增加用户和删除用户的功能。先通过shell把命令记录下来。后续换成golang

准备工作 安装gitlab

  1. # 先安装docker-compose 运行一个gitlab 就可以随便搞了
  2. mkdir -p /opt/gitlab/
  3. cd /opt/gitlab/
  4. curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
  5. cat > /opt/gitlab/docker-compose.yml <<EOF version: '2' services: # Version Control service: Gitlab gitlab: image: gitlab/gitlab-ce:12.10.5-ce.0 ports: - "32001:80" volumes: - ./log/:/var/log/gitlab - ./data/:/var/opt/gitlab - ./conf/:/etc/gitlab restart: "no" EOF
  6. mkdir -p log data conf
  7. ln -s /opt/gitlab/docker-compose /usr/bin/
  8. docker-compose up -d

fce3ba60c9658a8659551e62591672bf.png

docker-compose up -d命令执行完毕 可能界面还是502 需要再等待一会。

设置用户root密码

de1014011c272efe6d596288fae19392.png

设置完密码之后登陆 需要至少8位密码

创建api用的token

通过settings菜单或者直接使用如下URL,创建api用的token

http://192.168.1.113:32001/profile/personal\_access\_tokens

517944b9bbf715eed0303e637712b5dd.png]

b42750ca2fd599294a07dee2cb45b5c7.png

shell 添加用户测试

我的gitlab是v4 有些旧的可能是v3 具体查看对应的api文档http://192.168.1.113:32001/help/api/README.md

  1. access_token="xTyvzxayjxsE1XDfuYNo"
  2. gitlab_url="192.168.1.113:32001"
  3. curl -X POST -H "PRIVATE-TOKEN: ${access_token}" http://${gitlab_url}/api/v4/users -H 'cache-control: no-cache' -H 'content-type: application/json' -d '{ "email": "amao@163.com", "username": "amao", "password": "12345678", "name": "阿猫", "skip_confirmation": "true" }'

41d086d396248b31ce7ead658f3698a9.png

http://192.168.1.113:32001/admin/users

3e0d029dec6e340158a7f4cacd965a3e.png

如果想显示好看 可以安装 jq

  1. yum -y install jq
  2. curl -X POST -H "PRIVATE-TOKEN: ${access_token}" http://${gitlab_url}/api/v4/users -H 'cache-control: no-cache' -H 'content-type: application/json' -d '{ "email": "agou1@163.com", "username": "agou", "password": "12345678", "name": "阿猫", "skip_confirmation": "true" }' |jq .

3bef31fb795ed120add25f3535f8fd32.png

shell删除用户

  1. userid=7
  2. curl -X DELETE -H "PRIVATE-TOKEN: ${access_token}" http://${gitlab_url}/api/v4/users/${userid}?hard_delete=true |jq .

ccb672693456f6d2efbc214ee155671d.png

这里一定要使用hard_delete=true 否则会产生Ghost User 如下图

638b32ed0769d4890d5a7837d97abb36.png

点进去也是404

024b61f32d531f98a3219238dc44567e.png

Ghost User需要通过进入容器删除

  1. # 进入gitlab容器
  2. docker exec -it gitlab_gitlab_1 sh
  3. # 查询用户
  4. user = User.find_by(username: "ghost")
  5. # 删除ghost用户
  6. User.delete(user.id)

96ad7f5547bac9a15ba9586482990d9d.png

shell获取所有用户

  1. curl -X GET -H "PRIVATE-TOKEN: ${access_token}" http://${gitlab_url}/api/v4/users |jq .

可以后期用golang 获取一下用户名,判断一下长度是否大于1 再执行删除。避免重名。

参考并纠正其中错误

https://liumiaocn.blog.csdn.net/article/details/107443400

https://blog.csdn.net/liumiaocn/article/details/107443377

发表评论

表情:
评论列表 (有 0 条评论,375人围观)

还没有评论,来说两句吧...

相关阅读