shell脚本结合Linux命令实现批量创建用户并生成随机密码

 更新时间:2025年12月19日 09:49:22   作者:weixin_46244623  
在日常 Linux 运维或测试环境中,经常会遇到需要批量创建用户并设置密码的场景,下面我们就来看看如何 使用 Bash 脚本 + Linux 命令 批量创建 100 个用户,并将用户名和密码保存到文本文件中吧

在日常 Linux 运维或测试环境中,经常会遇到需要批量创建用户并设置密码的场景,比如:

  • 测试多用户登录
  • 教学或实验环境初始化
  • 内部系统批量账号准备

手动逐个创建不仅效率低,而且容易出错。本文介绍一种 使用 Bash 脚本 + Linux 命令 批量创建 100 个用户,并将用户名和密码保存到文本文件中的方法。

一、实现思路

整体流程如下:

  • 使用 for 循环生成用户列表(user1 ~ user100)
  • 通过 openssl 生成随机密码
  • 使用 useradd 创建用户
  • 使用 chpasswd 批量设置密码
  • 将用户名和密码保存到 .txt 文件中,方便后续分发或查看

二、完整脚本示例

#!/bin/bash

# 保存用户名和密码的文件
output_file="user_credentials.txt"

# 创建或清空文件
> "$output_file"

# 循环创建 100 个用户
for i in {1..100}; do
    username="user${i}"

    # 生成随机密码(12 位)
    password=$(openssl rand -base64 12 | tr -d '/+=')

    # 创建用户(-m 自动创建 home 目录)
    sudo useradd -m "$username"

    # 设置用户密码
    echo "$username:$password" | sudo chpasswd

    # 将用户名和密码写入文件
    echo "$username:$password" >> "$output_file"
done

echo "用户创建完成,账号信息已保存到 $output_file"

三、脚本说明

1、 用户名规则

username="user${i}"

生成的用户名为:

user1
user2
...
user100

你可以根据需要修改为 testuser${i}dev${i} 等。

2、 随机密码生成

openssl rand -base64 12 | tr -d '/+='

说明:

  • openssl rand -base64 12:生成 12 字节随机字符串
  • tr -d '/+=':去掉可能导致输入问题的特殊字符

这样生成的密码:

  • 随机性强
  • 适合测试 / 内部使用

3、 创建用户

sudo useradd -m "$username"

参数说明:

  • -m:自动创建 /home/username 目录
  • 需要 root 权限

4、 设置密码(推荐方式)

echo "$username:$password" | sudo chpasswd

相比 passwd 交互式方式,chpasswd 非常适合脚本自动化。

5、 保存账号信息

echo "$username:$password" >> "$output_file"

最终生成的 user_credentials.txt 内容类似:

user1:KjS82jds9As
user2:9DJkS8sd2Lm
...

注意:该文件包含明文密码,请妥善保管或仅用于测试环境。

四、脚本使用方法

1、 保存脚本

vi create_users.sh

粘贴脚本内容并保存。

2、 添加执行权限

chmod +x create_users.sh

3、 执行脚本

sudo ./create_users.sh

必须使用 sudo 或 root 用户运行。

五、补充:使用 openssl 生成加密密码

如果你只想生成 加密后的密码字符串(例如用于 /etc/shadow 或配置文件),可以使用:

openssl passwd -1 "123456"

示例输出:

$1$R9E3fH2J$gXGk3L1ZC8mZkYQ5DqGJb/

说明:

  • -1:使用 MD5-crypt
  • "123456":原始明文密码

实际脚本中更推荐使用 chpasswd,系统会自动选择合适的加密算法。

六、安全建议

1.仅在测试或内部环境使用明文密码文件

2.不要在生产环境长期保存明文密码

3.用完后建议删除:

shred -u user_credentials.txt

4.如果是服务器环境,建议结合:

  • SSH key 登录
  • 强制首次登录修改密码

七、总结

通过 Bash 脚本 + Linux 原生命令,你可以:

  • 快速批量创建用户
  • 自动生成安全随机密码
  • 方便地导出账号信息

这是一个非常实用的 Linux 运维自动化小技巧,适合新服务器初始化或测试环境搭建。

到此这篇关于shell脚本结合Linux命令实现批量创建用户并生成随机密码的文章就介绍到这了,更多相关shell批量创建用户内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Shell编程之变量数值计算方法示例

    Shell编程之变量数值计算方法示例

    这篇文章主要给大家介绍了关于Shell编程教程之变量数值计算的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-11-11
  • Linux下top命令之后的内容及其作用详解

    Linux下top命令之后的内容及其作用详解

    这篇文章主要为大家介绍了Linux下top命令之后的内容及其作用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-09-09
  • 创建Linux系统服务的方法

    创建Linux系统服务的方法

    这篇文章主要介绍了通过linux sh创建Linux系统服务的方法,需要的朋友可以参考下
    2014-01-01
  • Shell中比较大小简洁总结

    Shell中比较大小简洁总结

    这篇文章主要介绍了Shell中比较大小简洁总结,本文总结了在shell中比较变量大小的一些方法,需要的朋友可以参考下
    2014-12-12
  • Linux 中可重入函数与不可重入函数详解

    Linux 中可重入函数与不可重入函数详解

    这篇文章主要介绍了Linux 中可重入函数与不可重入函数详解的相关资料,需要的朋友可以参考下
    2017-06-06
  • shell获取目录下所有文件夹的名称并输出的实例

    shell获取目录下所有文件夹的名称并输出的实例

    今天小编就为大家分享一篇shell获取目录下所有文件夹的名称并输出的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-06-06
  • Linux中多线程详解及简单实例

    Linux中多线程详解及简单实例

    这篇文章主要介绍了Linux中多线程详解及简单实例的相关资料,这里对线程概念及优缺点做了详细介绍并说明如何创建和应用,需要的朋友可以参考下
    2017-07-07
  • 详解在dotnet core实现类似crontab的定时任务

    详解在dotnet core实现类似crontab的定时任务

    这篇文章主要介绍了在dotnet core实现类似crontab的定时任务,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-07-07
  • Linux帮助和用户管理命令

    Linux帮助和用户管理命令

    这篇文章主要介绍了Linux帮助和用户管理命令,需要的朋友可以参考下
    2017-10-10
  • 使用SHC对Shell脚本进行封装和源码隐藏的方法

    使用SHC对Shell脚本进行封装和源码隐藏的方法

    shc是一个由C语言编写的Shell脚本加密程序,它可以将你的脚本编译成二进制可执行文件,从而隐藏源码,这篇文章主要介绍了如何使用SHC对Shell脚本进行封装和源码隐藏,需要的朋友可以参考下
    2023-10-10

最新评论