shell批量添加新用户

批量加5个新用户,以u1到u5命名,并统一加一个新组,组名为class,统一改密码为123

bash 复制代码
#脚本1
#!/bin/bash
#判断class组是否存在
grep -w class /etc/group &>/dev/null
[ $? -ne 0 ] && groupadd class
#批量创建5个用户
for i in {1..5}
do
	useradd -G class u$i
	echo 123|passwd --stdin u$i
done

#脚本2
#!/bin/bash
#判断class组是否存在
cut -d: -f1 /etc/group|grep -w class &>/dev/null
[ $? -ne 0 ] && groupadd class

#循环增加用户,循环次数5次,for循环,给用户设定密码
for ((i=1;i<=5;i++))
do
	useradd u$i -G class
	echo 123|passwd --stdin u$i
done

#脚本3
#!/bin/bash
grep -w class /etc/group &>/dev/null
test $? -ne 0 && groupadd class
或者
groupadd class &>/dev/null

for ((i=1;i<=5;i++))
do
useradd -G class u$i && echo 123|passwd --stdin u$i
done

写一个脚本,实现批量添加20个用户,用户名为user1-20,密码为user后面跟5个随机字符

脚本1

bash 复制代码
 #!/bin/bash
    for i in {1..20}; do
        username="user$i"
        password="user$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 5 | head -n 1)"
        useradd "$username" && echo "$username:$password" | chpasswd
        echo "用户 $username 添加成功,密码: $password"
    done
    
    功能说明:
    循环创建user1到user20,密码格式为user+5位随机字符(字母数字组合)
    使用/dev/urandom生成随机字符串,tr过滤非字母数字字符
    chpasswd安全设置密码,避免明文密码出现在历史记录中
    使用方法:
    保存为add_users.sh
    添加执行权限:chmod +x add_users.sh
    需root权限运行:sudo ./add_users.sh
    注意事项:
    若用户已存在,脚本会报错但继续执行后续用户
    随机密码会直接打印到终端,生产环境建议重定向到安全文件

脚本2

bash 复制代码
以下是一个完整的 Shell 脚本,用于批量创建 20 个用户,用户名从 user1 到 user20,密码为 user 后加上 5 个随机字符。脚本还提供了错误处理功能以确保用户不会被重复创建,并将用户名和密码记录到文件 userinfo.txt 中
    
    #!/bin/bash
    # 定义变量
    USERADD="/usr/sbin/useradd"
    PASSWD="/usr/bin/passwd"
    CUT="/bin/cut"
    INFO_FILE="userinfo.txt"
    
    # 清空或创建用户信息文件
    > "$INFO_FILE"
    
    # 循环创建用户
    for i in {1..20}; do
        username="user$i"
        # 使用 /dev/urandom 生成随机字符串并截取前 5 个字符作为密码的一部分
        password="user$(cat /dev/urandom | $CUT -c-5 | head -c 5)"[^3]
        
        # 尝试添加用户
        if ! id "$username" &>/dev/null; then
            $USERADD "$username" && echo "$password" | $PASSWD --stdin "$username" &>/dev/null
            echo "$username:$password" >> "$INFO_FILE"
            echo "User $username created successfully."
        else
            echo "User $username already exists. Skipping..."
        fi
    done
    
    echo "All users processed. User information saved to $INFO_FILE."
    
    脚本说明
    用户检查:在创建用户之前,使用 id 命令检查用户是否已存在。如果用户已存在,则跳过该用户的创建过程。
    随机密码生成:通过 /dev/urandom 和 cut 命令生成 5 个随机字符,并将其附加到字符串 user 后面以形成密码。
    非交互式密码设置:使用 echo "$password" | passwd --stdin "$username" 命令以非交互方式为用户设置密码。
    记录用户信息:将每个用户的用户名和密码写入文件 userinfo.txt,以便后续使用。
    注意事项
    确保脚本具有执行权限。可以通过运行 chmod +x script_name.sh 来赋予脚本执行权限。
    运行脚本时需要超级用户权限(即 root 用户),因为 useradd 和 passwd 命令需要这些权限。
    如果系统中已经存在部分用户(如 user1 到 user20 的范围中有重复用户),脚本会自动跳过这些用户并继续处理剩余的用户
相关推荐
YuMiao6 小时前
gstatic连接问题导致Google Gemini / Studio页面乱码或图标缺失问题
服务器·网络协议
chlk1231 天前
Linux文件权限完全图解:读懂 ls -l 和 chmod 755 背后的秘密
linux·操作系统
舒一笑1 天前
Ubuntu系统安装CodeX出现问题
linux·后端
改一下配置文件1 天前
Ubuntu24.04安装NVIDIA驱动完整指南(含Secure Boot解决方案)
linux
深紫色的三北六号2 天前
Linux 服务器磁盘扩容与目录迁移:rsync + bind mount 实现服务无感迁移(无需修改配置)
linux·扩容·服务迁移
SudosuBash2 天前
[CS:APP 3e] 关于对 第 12 章 读/写者的一点思考和题解 (作业 12.19,12.20,12.21)
linux·并发·操作系统(os)
哈基咪怎么可能是AI2 天前
为什么我就想要「线性历史 + Signed Commits」GitHub 却把我当猴耍 🤬🎙️
linux·github
十日十行3 天前
Linux和window共享文件夹
linux
Sinclair3 天前
简单几步,安卓手机秒变服务器,安装 CMS 程序
android·服务器
木心月转码ing3 天前
WSL+Cpp开发环境配置
linux