linux批量创建、删除、更新用户密码

元气满满
2025-10-29 / 0 评论 / 0 阅读 / 正在检测是否收录...
温馨提示:
本文最后更新于2025年10月29日,已超过363天没有更新,若内容或图片失效,请留言反馈。

创建存放用户的文件users

cat users
test01
test02
test03
#!/usr/bin/env bash

# 定义的函数
some_function() {
    # 操作逻辑
    return
}

# 函数:创建用户
create_user() {
    my_array=()
    while IFS= read -r i # 使用while循环和read更安全并且兼容空格
    do
       id "$i" > /dev/null 2>&1
       if [ $? -eq 0 ]; then
          echo "The user $i already exists!"
          my_array+=("$i")
       else
          useradd -m -s /bin/bash "$i" > /dev/null 2>&1
       fi
    done < ./users

    if [ "${#my_array[@]}" -eq 0 ];then
        some_function
    else
        exit 1
    fi
}

# 函数:生成随机密码
generate_password() {
    local length="$1"
    if [ -z "$length" ]; then
        length=16
    fi
    tr -dc 'A-Za-z0-9!@#$%^&*()_+{}|:<>?' < /dev/urandom | head -c "$length" | xargs
}

# 函数:更新用户密码
rm -rf password.txt
update_passwd() {
    while IFS= read -r i
    do
      id "$i" > /dev/null 2>&1
      if [ $? -eq 0 ]; then
         # 生成新的密码
         new_password=$(generate_password 16)
         # 更改用户的密码
         echo "$i:$new_password" | chpasswd
         # 输出新密码
         echo "新的 $i 密码已设置为: $new_password" >> password.txt
         echo "用户 $i 密码已存放到./password.txt文件中"
      else
         echo "$i User creation failed!"
         exit 1
      fi
    done < ./users
}

# 确认是创建用户还是删除用户
del_arry=()
if [ "${1}" = "delete" ];then
    while IFS= read -r i # 使用while循环和read更安全并且兼容空格
    do
       id "$i" > /dev/null 2>&1
       if [ $? -eq 0 ]; then
          userdel "$i" > /dev/null 2>&1
          del_arry+=("$i")
       else
          echo "${i} user does not exist"
       fi
    done < ./users

    echo "已删除用户: ${del_arry[@]}"
    exit 0
elif [ "${1}" = "create" ];then
    # 创建用户
    create_user

    # 更改用户密码
    update_passwd
elif [ "${1}" = "update" ];then
    # 更改用户密码
    update_passwd
else
    echo  "ureate user or delete user or update user password? create/delete/update"
    exit 1
fi

执行脚本

# 创建用户
bash user.sh create

# 删除用户
bash user.sh delete

# 更新用户密码
bash user.sh update
0

评论 (0)

取消