企业实战脚本案例2:批量创建用户并设置初始密码

批量创建用户并设置初始密码



目录:

1.脚本功能介绍

2.脚本制作技术需求

2.1 useradd命令

2.2 id命令

2.3 passwd命令

2.4 随机密码

2.5 while循环+case+select

3.脚本编写案例



一、脚本功能介绍

在企业中生产或运维中,经常会遇到VPN服务器、企业网盘、企业邮箱、云桌面私有账号等等一系列的服务器。当批量新员工入职时,经常需要批量账号分配给新员工,若此类账号存储在数据库时,管理员可根据公司账号命名规范通过专有图形化系统进行录入账号,若账号存储在系统本地,此时通过脚本实现更为方便。

如企业账号规范:用户名规范为取员工名字中姓的全拼且首字母大写,名字的首字母,如有重复自动加重复用户名次数+1。密码规范为取字母数字中8位长度的任意字符。

二、脚本制作技术需求

2.1 useradd命令

    useradd命令的功能作用就是修改/etc/passwd文件中预定义的7个字段的内容,语法结构:useradd [option] login,常用用法如下:


useradd user1                               #添加用户user1

useradd -u 120 user1                   #修改用户user1的UID为120

useradd -g grouptest user1             #修改用户的默认组为grouptest

useradd -d /app/home/user1 user1      #修改指定user1的家目录为/app/home/user1

useradd -s /sbin/nologin  user1      #修改用户的shell

  2.2 id命令

    id命令的功能作用就是查看当前用户的id信息,包括UID、GID和默认组,如果不存在账户时,则提示不存在,$?返回值大于0


[[email protected] ~]#id root  &>/dev/null      #判断用户root是否存储

[[email protected] ~]#echo $?

0                                          #返回值为0,用户存在

[[email protected] ~]#id rootbad  &>/dev/null

[[email protected] ~]#echo $?

1                                          #返回值大于0,用户不存在

2.3 passwd命令

passwd命令的功能作为就是修改/etc/shadow文件中预定义的9个字段的内容,其中/etc/shadow的语义格式为:


bin  :   *   :  16659  :   0   :  99999  :   7   :       :      :

字段1   字段2    字段3    字段4    字段5    字段6   字段7   字段8  字段9

字段1:表示用户名,与/etc/passwd中的账号相匹配

字段2:默认是加密后的字符,如果为*或!!表示没有秘密,如果为!!(加密字符)表示此账号加锁

字段3:表示上一次修改密码的时间

字段4:表示密码最短存活时间,其含义就是多久内不能修改密码

字段5:表示密码最长存活时间,其含义就是密码最长有效期

字段6:表示密码提前多少天开始提醒用户账号快到期

字段7:表示密码到期后多少天宽限期,哲学含义就是容忍度是有限的,不要碰触底线

字段8:表示密码彻底失效,哲学含义就是已经触犯底线,将密码禁止

字段9:表示保留字段,目前尚未使用

最长用的就是修改锁定密码和修改账号,具体用法如下:


passwd -l user1               #锁定某个账号,将shadow文件中第二个字段!!(加密字符)字样;

passwd -u user1               #解锁某个账号,将shadow文件中第二个字段中的!!去掉

passwd --stdin user1         #设置密码通过标准输入进行设置

[[email protected] ~]#echo "centos123"|passwd --stdin xiaoxue
Changing password for user xiaoxue.
passwd: all authentication tokens updated successfully.

[[email protected] ~]#echo "centos123"|passwd --stdin xiaowang &>/dev/nul

2.4 随机密码

  在系统中随机密码有多种方式,其中优先使用专有的密码生成工具mkpasswd,mkpasswd工具来自expect的rpm包,因此使用mkpasswd时,必须先安装expect包,具体使用如下:


mkpasswd [option]

-l 指定密码生成的长度,默认是9

-d 指定密码生成时至少包含几个数字,默认是3个

-c 指定密码生成时至少包含几个小写字母,默认为2个

-C 指定密码生成时至少包含几个大写字母,默认2个

-s 指定密码生成时至少包含几个字符,默认1个

[[email protected] ~]#mkpasswd -l 10
X4ep9[mCyr
[[email protected] ~]#mkpasswd -l 10 -C 2
70w(OAggno

其次当系统中不方便安装mkpasswd工具时,使用系统随机字母字符生成器设备/dev/urandom,利用他生成随机数后进行过滤字母、数字,注意特殊字符过多,不一定连续,因此使用/dev/urandom时取特殊字符不好控制,建议使用mkpasswd,urandom具体使用如下:

[[email protected] ~]#a=`cat /dev/urandom |tr -dc "a-zA-Z0-9"|head -c8`
[[email protected] ~]#echo $a

mFPAW5Tn

[[email protected] ~]#a=`cat /dev/urandom |tr -dc "a-zA-Z0-9"|head -c8`
[[email protected] ~]#echo $a
WKChaCS

  2.5 while+case+break+select

    while循环执行某些指令动作,case实现选择性执行某些指令,break实现遇到某些指令后执行跳出循环,seletc是自动生成菜单,因此在脚本的结构中while+case+break+select实现

三、脚本案例

    脚本实现两种方式安装,菜单中选择1表示手工安装,手工安装适合批量较少时,无需自动化安装,菜单中选择2时表示自动化安装,适合批量增加用户,如新进大批员工,从人力资源获取相关信息后,根据人力资源提供的姓名创建大批用户,具体脚本如下:


#!/bin/bash

addlog=/var/log/useradd.log

execlog=/var/log/userexec.log
Dtime=`date +%F-%T`        #在定义日志时,可以加如时间
########################Define function to see whether a parameter is valid
Valid_Parameter (){
    local i=0
    until [[ $name =~ ^[a-zA-Z]+$ ]];do
        let i++
        if [ i -gt 3 ];then
            echo "you need to input correct parameter(eg:Wangyj)"
        fi
    done
}
########################Define function to add user############
Add_User (){
    local setpasswd j num Name

setpasswd=`mkpasswd -l 10`

#判断开头是否包含变量name所含的字段,从而判断是否有名字缩写的重复

let num=`awk -F: "/^"$name"[0-9]?+/{i++}END{print i}" /etc/passwd`+1
    Name01="$name"01   
    if [ $num -gt 1 ];then
            ####if $name is exist,than num >=1
            useradd "$Name" &>/null
                if [ $? == 0 ];then
                        echo $setpasswd |passwd --stdin "$Name" &>/null
                        echo "User $Name and password set successful"
                        echo "USER:$Name PASSWORD:$setpasswd" >> $addlog
                else
                        echo "$Name add failed!"
                fi
    else
            #if $name is not exist,then num=1,exec this statement
            useradd $Name01 &>/null
                if [ $? == 0 ];then
                        echo $setpasswd |passwd --stdin "$Name01" &>/null
                        echo "User "$Name01" and password set successful"
                            #if add success
                        echo "USER:"$Name01" PASSWORD:$setpasswd" >> $addlog
                else
                        echo ""$Name01"  add failed!"
                fi
    fi
}
########################Define function to manul user#########
Manul (){
    echo -e "\033[1;31mnote:if you input exit,then exit manal adding\033[0m"
    while true;do
        read -p "please input username: " name
            [ $name == exit ]&& break
            touch $addlog
            Valid_Parameter
            Add_User
    done
}
########################Define function to auto config########
auto_config (){
    echo -e "\033[1;31mAuto adding user begin\033[0m"
    while read name;do
    Add_User
    done < /etc/autoadd.config
    echo "adding finished"
}

######################Define main function
main (){
PS3="`echo please input the num you want: `"
select var in "manaul" "auto-config" "exit"
do
    case "$REPLY" in
        1)
            Manul
            ;;
        2)
            auto_config
            ;;
        3)
            echo exit successful
            exit 0
            ;;
        *)
            echo "intput error"
    esac
done
}
main

时间: 2024-10-01 05:09:54

企业实战脚本案例2:批量创建用户并设置初始密码的相关文章

Shell脚本批量创建用户并随机生成密码

要求:批量创建10个系统账号oldboy01-oldboy10,并设置生成密码(密码不同). 实现脚本: #!/bin/bash #Question3 for i in $(seq -w 10) do         useradd -s /bin/bash oldboy$i         echo "password$i" | md5sum | tee -a passwd.txt | passwd --stdin  oldboy$i done 脚本执行效果: [[email pro

批量创建用户并设置随机密码

批量创建用户并设置随机密码 批量创建用户并设置随机密码: #!/bin/bash . /etc/init.d/functions user=freddy Path=/data/ UserDb=$Path/user.db FailDb=$Path/user.db [ -d "$Path" ] || mkdir $Path [ -f "$UserDb" ] || touch $UserDb [ -f "$FailDb" ] || touch $Fai

shell脚本之centos批量创建用户

操作环境:centos7 执行命令: cat /etc/passwd | grep zcl   #确认没有zcl相关用户: mkdir -p /zcl/shell/ #创建脚本存放目录: cd /zcl/shell/ #切换至脚本目录: #编辑批量创建用户脚本: echo " #!/bin/bash" groupadd zcl_group for user in zcl1 zcl2 zcl3; do useradd -G zcl_group $user; echo "1234

企业实战脚本案例1:动态监测网站

动态监测网站 目录: 1.脚本功能介绍 2.脚本制作 3.脚本案例 一.脚本功能介绍   当你所在企业中因业务需求,通过公有云(如阿里云.腾讯云等)购买为数不多的云主机部署业务,没有空余资源部署zaibix等监控平台,此时可以通过脚本实现对云主机的内存使用情况.CPU使用情况.硬盘使用情况.进程的守护.web网站的动态监测等一系列的指标进行监控,如有异常可通过邮件报警,或通过企业某监控屏幕实时进行显示. 二.脚本制作   脚本制作思路: (1).需求分析,将需求列在文档之中: (2).针对需求,

Linux 批量创建用户及设置随机密码

一.项目需求批量创建10个用户stu01-stu10,并且设置随机8位密码,要求:不能用shell循环(例如:for,while等),只能用linux命令及管道实现.二.实现方法(一)1) 创建账号并设置随机密码[[email protected] ~]# for n in seq 10;do useradd user$n;echo "user$necho user$n|md5sum|cut -c4-8"|passwd --stdin user$n;done2)打印密码并导入文件[[e

企业实战脚本案例3:批量管理自动化运维100台小规模服务器

批量管理自动化运维100台小规模服务器 目录 1.脚本背景介绍 2.脚本技术需求分析 2.1 SSH免登陆认证 2.2 Expect实现key分发 2.2 PSSH家族命令详解 3.脚本功能及实现过程 3.1 脚本运行环境介绍 3.2 脚本功能介绍 3.3 脚本编写思路 3.4 脚本编写案例 一.脚本背景介绍 在企业中经常会用遇到小规模的集群服务器,在日常的管理中经常会遇到重复性的动作,如更新备上百台服务器上的ssh公钥.备份上百台服务器上的/etc/passwd配置文件等等,通常情况下采用专用

纯linux命令批量创建用户并设置随机密码且显示用户和密码的脚本

##deleate rm -f /root/user_password.txt /root/user_names.txt /root/user_list.txt ##create stu01-stu10 echo stu{01..10}|xargs -n1 >> /root/user_names.txt ##create users stu01-stu10 and build password cat /root/user_names.txt|sed 's#.*#useradd &;e

老男孩教育每日一题-第63天-批量创建用户并设置随机密码(要求不能使用shell循环语句)

题目:批量添加20个用户,用户名为user1~20,密码为5个随机字符(要求不能使用shell循环语句) 解决方法 方法1  echo user{1..20}|xargs -n1|sed -r 's#(.*)#useradd \1 \&\& echo \1 >>/tmp/passwd.txt \&\& echo $RANDOM |md5sum |cut -c 1-5>>/tmp/passwd.txt \&\& echo `tail -

(转)通过shell脚本实现批量添加用户和设置随机密码以及生产环境如何批量添加

通过shell脚本实现批量添加用户和设置随机密码以及生产环境如何批量添加 原文:http://www.21yunwei.com/archives/4773 有一个朋友问我如何批量创建用户和设置密码 ,我就简单给他写了两个脚本,让他自己参考下并自己根据实际情况进行修改,毕竟他需要的用户名和密码都是实际生产环境的. 这里分两种情况,一种是测试for循环批量添加用户,一个是根据实际生产环境进行批量添加.分别写一下案例如下:1,for添加指定类型用户以及设置随机密码.脚本作用:批量添加user1-10用