本文目录导读:

- Linux系统批量创建用户
- Windows AD批量创建用户 (PowerShell)
- 数据库批量创建用户 (MySQL/MariaDB)
- Web应用批量注册 (Python脚本)
- 使用Ansible批量创建Linux用户
- 使用建议
Linux系统批量创建用户
基础脚本
#!/bin/bash
# 用户列表文件格式:username:password:group
USER_FILE="users.txt"
# 检查文件是否存在
if [ ! -f "$USER_FILE" ]; then
echo "用户列表文件 $USER_FILE 不存在"
exit 1
fi
# 逐行处理用户
while IFS=':' read -r username password group; do
# 跳过空行和注释行
[[ -z "$username" || "$username" =~ ^# ]] && continue
# 检查用户是否已存在
if id "$username" &>/dev/null; then
echo "用户 $username 已存在,跳过"
continue
fi
# 创建用户组(如果指定)
if [ -n "$group" ]; then
if ! getent group "$group" &>/dev/null; then
groupadd "$group"
fi
useradd -m -g "$group" "$username"
else
useradd -m "$username"
fi
# 设置密码
echo "$username:$password" | chpasswd
# 强制首次登录修改密码
chage -d 0 "$username"
echo "用户 $username 创建成功"
done < "$USER_FILE"
用户列表文件格式 (users.txt)
# 格式: username:password:group
user1:Pass123!:developers
user2:Pass456!:testers
user3:Pass789!:
Windows AD批量创建用户 (PowerShell)
# 批量创建AD用户
$users = Import-Csv "C:\users.csv"
foreach ($user in $users) {
$username = $user.Username
$password = $user.Password
$name = $user.Name
$ou = $user.OU
# 安全密码转换
$securePassword = ConvertTo-SecureString -String $password -AsPlainText -Force
# AD用户属性
$params = @{
Name = $name
SamAccountName = $username
UserPrincipalName = "$username@domain.com"
GivenName = $user.FirstName
Surname = $user.LastName
Department = $user.Department
Title = $user.Title
AccountPassword = $securePassword
Enabled = $true
ChangePasswordAtLogon = $true
Path = "OU=$ou,DC=domain,DC=com"
}
try {
New-ADUser @params
Write-Host "用户 $username 创建成功" -ForegroundColor Green
}
catch {
Write-Host "创建用户 $username 失败: $_" -ForegroundColor Red
}
}
数据库批量创建用户 (MySQL/MariaDB)
-- 创建存储过程批量创建用户
DELIMITER $$
CREATE PROCEDURE batch_create_users()
BEGIN
DECLARE done INT DEFAULT FALSE;
DECLARE v_username VARCHAR(50);
DECLARE v_password VARCHAR(100);
DECLARE v_host VARCHAR(50);
-- 临时表存储用户信息
DECLARE user_cursor CURSOR FOR
SELECT username, password, host FROM temp_users;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
OPEN user_cursor;
read_loop: LOOP
FETCH user_cursor INTO v_username, v_password, v_host;
IF done THEN
LEAVE read_loop;
END IF;
-- 检查用户是否已存在
SET @user_exists = (SELECT COUNT(*) FROM mysql.user
WHERE User = v_username AND Host = v_host);
IF @user_exists = 0 THEN
-- 创建用户
SET @sql = CONCAT('CREATE USER ''', v_username, '''@''',
v_host, ''' IDENTIFIED BY ''', v_password, '''');
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
-- 授予基本权限
SET @sql = CONCAT('GRANT SELECT ON mydb.* TO ''',
v_username, '''@''', v_host, '''');
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END IF;
END LOOP;
CLOSE user_cursor;
FLUSH PRIVILEGES;
END$$
DELIMITER ;
Web应用批量注册 (Python脚本)
#!/usr/bin/env python3
import pandas as pd
import requests
import json
import time
from concurrent.futures import ThreadPoolExecutor
class BulkUserCreator:
def __init__(self, api_url, admin_token):
self.api_url = api_url
self.headers = {
'Authorization': f'Bearer {admin_token}',
'Content-Type': 'application/json'
}
def create_user(self, user_data):
"""创建单个用户"""
try:
response = requests.post(
f"{self.api_url}/users",
headers=self.headers,
json=user_data
)
if response.status_code == 201:
return {"success": True, "username": user_data['username']}
else:
return {"success": False, "username": user_data['username'],
"error": response.text}
except Exception as e:
return {"success": False, "username": user_data['username'],
"error": str(e)}
def batch_create(self, csv_file, batch_size=10, max_workers=5):
"""批量创建用户"""
# 读取CSV文件
df = pd.read_csv(csv_file)
results = []
# 使用线程池并行处理
with ThreadPoolExecutor(max_workers=max_workers) as executor:
# 分批处理
for i in range(0, len(df), batch_size):
batch = df.iloc[i:i+batch_size]
# 提交批量任务
futures = []
for _, row in batch.iterrows():
user_data = {
'username': row['username'],
'email': row['email'],
'password': row['password'],
'full_name': row['full_name'],
'role': row.get('role', 'user')
}
futures.append(executor.submit(self.create_user, user_data))
# 收集结果
for future in futures:
results.append(future.result())
# 速率限制
time.sleep(1)
return results
# 使用示例
if __name__ == "__main__":
creator = BulkUserCreator(
api_url="https://your-api.com/api",
admin_token="your-admin-token"
)
results = creator.batch_create("users.csv")
# 输出结果统计
successful = [r for r in results if r['success']]
failed = [r for r in results if not r['success']]
print(f"成功创建: {len(successful)}")
print(f"失败: {len(failed)}")
for fail in failed:
print(f" - {fail['username']}: {fail['error']}")
使用Ansible批量创建Linux用户
---
- name: 批量创建Linux用户
hosts: all
become: yes
vars:
users:
- name: user1
uid: 1001
group: developers
shell: /bin/bash
ssh_key: "ssh-rsa AAAAB3NzaC1yc2E..."
- name: user2
uid: 1002
group: testers
shell: /bin/bash
tasks:
- name: 创建用户组
group:
name: "{{ item }}"
state: present
loop:
- developers
- testers
when: item is defined
- name: 创建用户
user:
name: "{{ item.name }}"
uid: "{{ item.uid | default(omit) }}"
group: "{{ item.group | default(omit) }}"
shell: "{{ item.shell | default('/bin/bash') }}"
create_home: yes
state: present
loop: "{{ users }}"
- name: 设置SSH密钥
authorized_key:
user: "{{ item.name }}"
key: "{{ item.ssh_key }}"
loop: "{{ users }}"
when: item.ssh_key is defined
- name: 设置密码(需要加密)
user:
name: "{{ item.name }}"
password: "{{ 'password123' | password_hash('sha512') }}"
loop: "{{ users }}"
使用建议
-
安全性:
- 不要在脚本中硬编码密码
- 使用环境变量或密码管理工具
- 实施最小权限原则
-
可靠性:
- 添加错误处理
- 记录日志
- 支持回滚操作
-
性能优化:
- 批量处理时使用限制
- 实施速率控制
- 考虑使用异步处理
-
验证机制:
- 预检查用户是否存在
- 验证输入数据
- 提供结果报告
选择哪种脚本取决于您的具体场景和需求,是否需要针对特定场景的定制?
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播