shell实战自动化创建用户,并设置密码 |
您所在的位置:网站首页 › linux命令创建用户并设置密码保护模式 › shell实战自动化创建用户,并设置密码 |
目录 一、主程序 二、程序分析 三、程序实战提升① 四、程序实战提升② 一、主程序 #!/bin/bash # 创建用户并设置密码的函数 create_user() { local username=$1 local password=$2 if id "$username" &>/dev/null; then echo "用户 $username 已经存在。" else echo "正在创建用户 $username ..." useradd $username echo "$username:$password" | chpasswd echo "已为用户 $username 设置密码。" fi } # 读取输入信息 echo "请输入要创建的用户列表,用逗号隔开:" read user_input # 检查用户输入是否为空 if [ -z "$user_input" ]; then echo "输入错误,未提供任何用户名。" exit 1 fi # 设置通用密码 PASSWORD="xxxxxxxxxxxxxxx" # 分割输入的用户,并为每个用户调用创建函数 IFS=',' read -ra USERS /dev/null 将命令的标准输出和错误输出都重定向到 /dev/null(即丢弃这些输出)。如果用户已存在(if 条件为真),则打印存在信息。如果用户不存在,使用 useradd 命令创建用户,然后通过管道将新密码传递给 chpasswd 命令来设置密码。脚本的剩余部分: 提示用户输入一系列用户名,用逗号分隔。检查用户输入是否为空,若为空则打印错误信息并退出脚本。设置了一个变量 PASSWORD 存储通用密码 "xxxxxxxxxx"。使用 IFS=',' read -ra USERS /dev/null; then echo "用户 $username 已经存在。" else echo "正在创建用户 $username ..." useradd $username echo "$username:$password" | chpasswd echo "已为用户 $username 设置密码。" fi } # 读取输入信息 echo "请输入要创建的用户列表,用逗号隔开:" read user_input # 检查用户输入是否为空 if [ -z "$user_input" ]; then echo "输入错误,未提供任何用户名。" exit 1 fi # 请求用户输入密码 echo "请输入用户密码(留空将自动生成8位的随机密码):" read -s user_password # 如果用户未输入密码,则生成8位随机密码 if [ -z "$user_password" ]; then user_password=$(pwgen 8 1) echo "未提供密码,将为所有用户使用随机密码:$user_password" fi # 分割输入的用户,并为每个用户调用创建函数 IFS=',' read -ra USERS /dev/null; then echo "pwgen 命令未找到,请先安装 pwgen。" # 判断系统类型并安装 pwgen local os_type=$(uname -s) case "$os_type" in Linux) if [ -f /etc/debian_version ]; then # 基于Debian的系统 sudo apt-get update && sudo apt-get install -y pwgen elif [ -f /etc/redhat-release ]; then # 基于RedHat的系统 sudo yum install -y pwgen else echo "未识别的 Linux 发行版。请手动安装 pwgen。" fi ;; Darwin) # macOS 系统 brew install pwgen ;; *) echo "不支持的操作系统。请手动安装 pwgen。" ;; esac fi } # 生成随机密码的函数 generate_random_password() { ensure_pwgen_installed pwgen 8 1 } # 读取输入信息 echo "请输入要创建的用户列表,用逗号隔开:" read user_input # 检查用户输入是否为空 if [ -z "$user_input" ]; then echo "输入错误,未提供任何用户名。" exit 1 fi # 获取密码 echo "请输入要设置的密码(留空则为每个用户生成随机密码):" read -s user_password # 如果未输入密码则生成随机密码 if [ -z "$user_password" ]; then echo "未输入密码,将为每个用户生成随机密码。" user_password=$(generate_random_password) fi # 分割输入的用户,并为每个用户调用创建函数 IFS=',' read -ra USERS |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |