shell脚本给出文件形式批量创建用户

该文章介绍了一个bash脚本,用于根据用户提供的文件批量创建Linux用户。脚本包含一个主菜单,支持单个用户创建和批量加序号的用户创建。在创建用户前,脚本会检查用户名是否已存在。如果不存在,脚本会生成随机密码并创建用户,同时将用户名和密码记录到文件中。
摘要由CSDN通过智能技术生成

一、需求

  1. 用户给出用户名文件,文件里都是用户名,根据文件名创建用户

  1. 提示按1,创建名单中的用户。不加序号。

  1. 提示按2,批量创建用户,然后用户输入创建用户个数,最后创建的用户是a1,a2这种形式。

  1. 查用户是否存在,存在提示存在,不存在创建.

二、脚本如下

#!/bin/bash
#versino-v3-batch
>tmp_name.txt

master() {
 if [ $num -eq 1 ]
 then
     one_user
 elif [ $num -eq 2 ]
 then
     read -p "请输入创建用户的数量" num1
     many_user
  else
      echo "无效选择退出"
 fi
}
one_user() {
path=/root/lidao/suiji_user/useradd
    for i in `cat $file`
        do
        awk -F: '{print $1}' /etc/passwd | grep -w  "$i" &> /dev/null
        if [ $? -eq 0  ]
        then
        echo "$i 用户已存在,请修改"
      
        else
        pass=`tr -cd 'a-z' </dev/urandom | head -c8`
        useradd $i
        echo $pass |passwd --stdin $i  &> /dev/null && echo "$i 创建成功,密码是$pass"
        echo "$i 创建成功,密码是$pass" >> $path/pass.txt
        fi
        done
}
many_user() {
>tmp_name.txt
path=/root/lidao/suiji_user/useradd

for c in `cat $file`
do
    for a in `seq 1 $num1`
    do
    echo $c$a  >> tmp_name.txt
    done
done


for b in `cat tmp_name.txt`
do
awk -F: '{print $1}' /etc/passwd | grep -w  "$b" &> /dev/null
if [ $? -eq 0 ]
then
echo "$b 用户已经存在"
else
        pass=`tr -cd 'a-z' </dev/urandom | head -c8`
        useradd $b
        echo $pass |passwd --stdin $b  &> /dev/null  && echo "$b 创建成功,密码是$pass" 
        echo "$b 创建成功,密码是$pass" >> $path/pass.txt
fi
done
}
read -p "请输入增加用户的文件名" file
read -p "按1批量创建1个用户,按2批量创建多个用户" num
case $num in
1)
master
;;
2)
master
;;
*)
;;
esac

三、执行结果

四、脚本分析

  1. 主菜单case选择1和2

  1. 分为master主模块,one_user添加一个用户模块,many_user批量添加多个用户模块

  1. Master模块是主流程,选择1,执行one_user模块,选择2,执行many_user模块,其余按键无效。

  1. one_user模块,for读取file文件,检测文件中的用户名/etc/passwd是否存在,如果存在,提示存在,不存在则创建,并把密码用户名和密码记录在pass.txt文件中

  1. many_user模块,循环套循环得到加序号的用户名(for读取file文件,里面的for是用户输入的数字循环,外面for转一圈,也就是用户名,里面的for转n圈,这样就形成a1,a2,a3这种用户名),最后把它记录在tmp_name.txt文件中,是临时创建的用户名名单,再用for读取这tmp_name.txt文件,先检测tmp_name.txt文件中的用户名在/etc/passwd是否存在,如果存在,提示存在,否则创建用户。

以上说的模块其实就是函数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值