我来介绍几种批量创建用户账户的方法,主要针对Linux系统。

使用Shell脚本批量创建
基础版 - 从用户名列表创建
#!/bin/bash
# bulk_create_users.sh - 批量创建用户
USER_FILE="users.txt" # 用户名列表文件
DEFAULT_PASS="TempPass123!" # 默认密码
# 检查是否以root运行
if [[ $EUID -ne 0 ]]; then
echo "请以root用户运行此脚本"
exit 1
fi
# 检查用户文件是否存在
if [[ ! -f "$USER_FILE" ]]; then
echo "用户文件 $USER_FILE 不存在"
exit 1
fi
# 读取用户名并创建用户
while IFS= read -r username; do
# 跳过空行和注释
[[ -z "$username" || "$username" =~ ^# ]] && continue
# 检查用户是否已存在
if id "$username" &>/dev/null; then
echo "用户 $username 已存在,跳过"
continue
fi
# 创建用户
useradd -m -s /bin/bash "$username"
# 设置密码
echo "$username:$DEFAULT_PASS" | chpasswd
# 强制首次登录修改密码
passwd -e "$username"
echo "已创建用户: $username"
done < "$USER_FILE"
echo "批量创建完成!"
user.txt 文件格式
zhangsan
lisi
wangwu
# 这是注释
zhaoliu
进阶版 - 带密码和组管理
#!/bin/bash
# advanced_bulk_create.sh - 高级批量创建
# 用户信息CSV格式: 用户名,密码,组名(可选),全名(可选)
CSV_FILE="users.csv"
DEFAULT_SHELL="/bin/bash"
create_user_with_details() {
local username="$1"
local password="$2"
local group="$3"
local fullname="$4"
# 检查用户是否存在
if id "$username" &>/dev/null; then
echo "用户 $username 已存在,跳过"
return
fi
# 创建用户,可设置全名和家目录
if [[ -n "$fullname" ]]; then
useradd -m -s "$DEFAULT_SHELL" -c "$fullname" "$username"
else
useradd -m -s "$DEFAULT_SHELL" "$username"
fi
# 设置密码
echo "$username:$password" | chpasswd
# 添加到附加组
if [[ -n "$group" ]]; then
# 检查组是否存在,不存在则创建
if ! getent group "$group" &>/dev/null; then
groupadd "$group"
fi
usermod -aG "$group" "$username"
fi
# 创建用户的SSH目录(可选)
mkdir -p /home/$username/.ssh
chmod 700 /home/$username/.ssh
chown $username:$username /home/$username/.ssh
echo "已创建用户: $username (组: $group)"
}
main() {
# 检查root权限
if [[ $EUID -ne 0 ]]; then
echo "请以root用户运行此脚本"
exit 1
fi
# 检查CSV文件
if [[ ! -f "$CSV_FILE" ]]; then
echo "CSV文件 $CSV_FILE 不存在"
echo "格式: 用户名,密码,组名,全名"
exit 1
fi
# 跳过CSV头部,处理数据行
tail -n +2 "$CSV_FILE" | while IFS=',' read -r username password group fullname; do
# 去除空格
username=$(echo "$username" | xargs)
password=$(echo "$password" | xargs)
group=$(echo "$group" | xargs)
fullname=$(echo "$fullname" | xargs)
# 跳过空用户名
[[ -z "$username" ]] && continue
create_user_with_details "$username" "$password" "$group" "$fullname"
done
echo "批量创建完成!"
}
main
users.csv 文件格式
用户名,密码,组名,全名 zhangsan,Pass123!,developers,张三 lisi,Pass456!,developers,李四 wangwu,Pass789!,admins,王五
Python脚本版本
#!/usr/bin/env python3
# bulk_create_users.py
import csv
import subprocess
import sys
import os
def check_root():
"""检查是否以root运行"""
if os.geteuid() != 0:
print("请以root用户运行此脚本")
sys.exit(1)
def create_user(username, password=None, group=None, fullname=None):
"""创建单个用户"""
# 检查用户是否存在
result = subprocess.run(['id', username], capture_output=True, text=True)
if result.returncode == 0:
print(f"用户 {username} 已存在,跳过")
return False
# 创建用户命令
cmd = ['useradd', '-m', '-s', '/bin/bash']
if fullname:
cmd.extend(['-c', fullname])
cmd.append(username)
# 执行创建
result = subprocess.run(cmd, capture_output=True, text=True)
if result.returncode != 0:
print(f"创建用户 {username} 失败: {result.stderr}")
return False
# 设置密码
if password:
pwd_cmd = ['chpasswd']
pwd_input = f"{username}:{password}"
result = subprocess.run(pwd_cmd, input=pwd_input,
text=True, capture_output=True)
# 添加到组
if group:
subprocess.run(['usermod', '-aG', group, username])
print(f"已创建用户: {username}")
return True
def bulk_create_from_csv(csv_file):
"""从CSV文件批量创建用户"""
# 检查文件
if not os.path.exists(csv_file):
print(f"文件 {csv_file} 不存在")
return
with open(csv_file, 'r', encoding='utf-8') as f:
reader = csv.DictReader(f)
for row in reader:
create_user(
username=row.get('用户名', '').strip(),
password=row.get('密码', 'DefaultPass123!'),
group=row.get('组名', '').strip(),
fullname=row.get('全名', '').strip()
)
def main():
check_root()
csv_file = sys.argv[1] if len(sys.argv) > 1 else 'users.csv'
bulk_create_from_csv(csv_file)
print("批量创建完成!")
if __name__ == '__main__':
main()
使用现有工具
newusers 命令
# 准备用户信息文件 cat > /tmp/users.txt << EOF zhangsan:x:1001:1001:张三:/home/zhangsan:/bin/bash lisi:x:1002:1001:李四:/home/lisi:/bin/bash wangwu:x:1003:1002:王五:/home/wangwu:/bin/bash EOF # 批量创建用户 newusers /tmp/users.txt
使用说明
-
准备工作
# 给脚本执行权限 chmod +x bulk_create_users.sh
-
运行脚本
# Shell脚本 sudo ./bulk_create_users.sh
Python脚本
sudo python3 bulk_create_users.py users.csv
3. **验证结果**
```bash
# 查看创建的用户
cat /etc/passwd | grep -E "zhangsan|lisi|wangwu"
# 或使用
getent passwd | grep -E "zhangsan|lisi|wangwu"
安全注意事项
⚠️ 重要提醒:
- 所有操作必须以root权限运行
- 生产环境中建议使用安全随机密码
- 创建后应及时更改默认密码
- 记录所有创建的用户信息
- 考虑使用LDAP或AD等集中认证系统
选择哪种方法取决于你的具体需求,对于简单场景推荐使用Shell脚本,复杂场景推荐Python脚本。
版权声明: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直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播