mirror of
https://github.com/jumpserver/jumpserver.git
synced 2025-09-24 21:08:30 +00:00
服务账号注册机制更改 (#2079)
* [Update] 服务账号注册 * [Update] 修改settings配置 * [Update] 修改settings * [Update] 整理terminal api * [Update] 修改terminal api * [Update] 修改terminal注册机制
This commit is contained in:
3
utils/create_assets_user/admin_users.txt
Normal file
3
utils/create_assets_user/admin_users.txt
Normal file
@@ -0,0 +1,3 @@
|
||||
# 名称 用户名 密码
|
||||
test123 testq12 test123123123
|
||||
|
159
utils/create_assets_user/bulk_create_user.py
Normal file
159
utils/create_assets_user/bulk_create_user.py
Normal file
@@ -0,0 +1,159 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
import requests
|
||||
import sys
|
||||
|
||||
admin_username = 'admin'
|
||||
admin_password = 'admin'
|
||||
domain_url = 'http://localhost:8080'
|
||||
|
||||
|
||||
class UserCreation:
|
||||
headers = {}
|
||||
|
||||
def __init__(self, username, password, domain):
|
||||
self.username = username
|
||||
self.password = password
|
||||
self.domain = domain
|
||||
|
||||
def auth(self):
|
||||
url = "{}/api/users/v1/token/".format(self.domain)
|
||||
data = {"username": self.username, "password": self.password}
|
||||
resp = requests.post(url, data=data)
|
||||
if resp.status_code == 200:
|
||||
data = resp.json()
|
||||
self.headers.update({
|
||||
'Authorization': '{} {}'.format(data['Keyword'], data['Token'])
|
||||
})
|
||||
else:
|
||||
print("用户名 或 密码 或 地址 不对")
|
||||
sys.exit(2)
|
||||
|
||||
def get_user_detail(self, name, url):
|
||||
resp = requests.get(url, headers=self.headers)
|
||||
if resp.status_code == 200:
|
||||
data = resp.json()
|
||||
if len(data) < 1:
|
||||
return None
|
||||
for d in data:
|
||||
if d['name'] == name:
|
||||
return d
|
||||
return None
|
||||
return None
|
||||
|
||||
def get_system_user_detail(self, name):
|
||||
url = '{}/api/assets/v1/system-user/?name={}'.format(self.domain, name)
|
||||
return self.get_user_detail(name, url)
|
||||
|
||||
def create_system_user(self, info):
|
||||
system_user = self.get_system_user_detail(info.get('name'))
|
||||
if system_user:
|
||||
return system_user
|
||||
url = '{}/api/assets/v1/system-user/'.format(self.domain)
|
||||
resp = requests.post(url, data=info, headers=self.headers, json=False)
|
||||
if resp.status_code == 201:
|
||||
return resp.json()
|
||||
else:
|
||||
print("创建系统用户失败: {} {}".format(info['name'], resp.content))
|
||||
return None
|
||||
|
||||
def set_system_user_auth(self, system_user, info):
|
||||
url = '{}/api/assets/v1/system-user/{}/auth-info/'.format(
|
||||
self.domain, system_user['id']
|
||||
)
|
||||
data = {'password': info.get('password')}
|
||||
resp = requests.patch(url, data=data, headers=self.headers)
|
||||
if resp.status_code > 300:
|
||||
print("设置系统用户密码失败: {} {}".format(
|
||||
system_user.get('name'), resp.content.decode()
|
||||
))
|
||||
else:
|
||||
return True
|
||||
|
||||
def get_admin_user_detail(self, name):
|
||||
url = '{}/api/assets/v1/admin-user/?name={}'.format(self.domain, name)
|
||||
return self.get_user_detail(name, url)
|
||||
|
||||
def create_admin_user(self, info):
|
||||
admin_user = self.get_admin_user_detail(info.get('name'))
|
||||
if admin_user:
|
||||
return admin_user
|
||||
url = '{}/api/assets/v1/admin-user/'.format(self.domain)
|
||||
resp = requests.post(url, data=info, headers=self.headers, json=False)
|
||||
if resp.status_code == 201:
|
||||
return resp.json()
|
||||
else:
|
||||
print("创建管理用户失败: {} {}".format(info['name'], resp.content.decode()))
|
||||
return None
|
||||
|
||||
def set_admin_user_auth(self, admin_user, info):
|
||||
url = '{}/api/assets/v1/admin-user/{}/auth/'.format(
|
||||
self.domain, admin_user['id']
|
||||
)
|
||||
data = {'password': info.get('password')}
|
||||
resp = requests.patch(url, data=data, headers=self.headers)
|
||||
if resp.status_code > 300:
|
||||
print("设置管理用户密码失败: {} {}".format(
|
||||
admin_user.get('name'), resp.content.decode()
|
||||
))
|
||||
else:
|
||||
return True
|
||||
|
||||
def create_system_users(self):
|
||||
print("#"*10, " 开始创建系统用户 ", "#"*10)
|
||||
users = []
|
||||
f = open('system_users.txt')
|
||||
for line in f:
|
||||
line = line.strip()
|
||||
if not line or line.startswith('#'):
|
||||
continue
|
||||
name, username, password, protocol, auto_push = line.split()[:5]
|
||||
info = {
|
||||
"name": name,
|
||||
"username": username,
|
||||
"password": password,
|
||||
"protocol": protocol,
|
||||
"auto_push": bool(int(auto_push)),
|
||||
"login_mode": "auto"
|
||||
}
|
||||
users.append(info)
|
||||
|
||||
for i, info in enumerate(users, start=1):
|
||||
system_user = self.create_system_user(info)
|
||||
if system_user and self.set_system_user_auth(system_user, info):
|
||||
print("[{}] 创建系统用户成功: {}".format(i, system_user['name']))
|
||||
|
||||
def create_admin_users(self):
|
||||
print("\n", "#"*10, " 开始创建管理用户 ", "#"*10)
|
||||
users = []
|
||||
f = open('admin_users.txt')
|
||||
for line in f:
|
||||
line = line.strip()
|
||||
if not line or line.startswith('#'):
|
||||
continue
|
||||
name, username, password = line.split()[:3]
|
||||
info = {
|
||||
"name": name,
|
||||
"username": username,
|
||||
"password": password,
|
||||
}
|
||||
users.append(info)
|
||||
for i, info in enumerate(users, start=1):
|
||||
admin_user = self.create_admin_user(info)
|
||||
if admin_user and self.set_admin_user_auth(admin_user, info):
|
||||
print("[{}] 创建管理用户成功: {}".format(i, admin_user['name']))
|
||||
|
||||
|
||||
def main():
|
||||
api = UserCreation(username=admin_username,
|
||||
password=admin_password,
|
||||
domain=domain_url)
|
||||
api.auth()
|
||||
api.create_system_users()
|
||||
api.create_admin_users()
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
|
||||
|
4
utils/create_assets_user/system_users.txt
Normal file
4
utils/create_assets_user/system_users.txt
Normal file
@@ -0,0 +1,4 @@
|
||||
# 名称 用户名 密码 协议[ssh,rdp] 自动推送[0不推送,1自动推送]
|
||||
test123 test123 test123123123 ssh 0
|
||||
test1323 test123 test123123123 ssh 0
|
||||
|
21
utils/create_assets_user/使用说明.txt
Normal file
21
utils/create_assets_user/使用说明.txt
Normal file
@@ -0,0 +1,21 @@
|
||||
1. 安装依赖包
|
||||
$ pip install requests
|
||||
|
||||
2. 设置账号密码和地址
|
||||
$ vim bulk_create_user.py # 设置为正确的值
|
||||
admin_username = 'admin'
|
||||
admin_password = 'admin'
|
||||
domain_url = 'http://localhost:8081'
|
||||
|
||||
3. 配置需要添加的系统用户
|
||||
$ vim system_users.txt
|
||||
# 名称 用户名 密码
|
||||
test123 testq12 test123123123
|
||||
|
||||
3. 配置需要添加的系统用户
|
||||
$ vim system_users.txt
|
||||
# 名称 用户名 密码 协议[ssh,rdp] 自动推送[0不推送,1自动推送]
|
||||
test123 test123 test123123123 ssh 0
|
||||
|
||||
4. 运行
|
||||
$ python bulk_create_user.py
|
Reference in New Issue
Block a user