美文网首页shell
【现学现忘&Shell流程控制】— 48.for循环练习2

【现学现忘&Shell流程控制】— 48.for循环练习2

作者: 繁华似锦Fighting | 来源:发表于2020-11-04 18:31 被阅读0次

    6、练习:批量添加指定数量的用户

    Shell脚本批量添加的用户必须是有规律的,如user1user2user3等以此类推。

    但是你不能批量添加如张三、李四、王二麻子等这样无规律的用户名称。

    # 创建脚本文件useradd.sh
    [root@localhost ~]# vim useradd.sh
    
    
    # 批量添加指定数量的用户
    # 开始编写脚本文件
    
    #!/bin/bash
    
    # 1.接收三个输入信息
    # 1.1让用户输入用户名,把输入保存到变量name 
    read -p "Please input user name:" -t 30 name
    
    # 1.2让用户输入添加用户的数量,把输入保存到变量num
    # 用户前缀一样,后缀数字递增。
    read -p "Please input the number of users:" -t 30 num
    
    # 1.3让用户输入初始密码,把输入保存到变量pass
    # 统一密码。
    read -p "Please input the password of users:" -t 30 pass
    
    # 2.进行添加用户
    # 2.1判断三个变量不为空
    if [ ! -z "$name" -a ! -z "$num" -a ! -z "$pass" ]
        then 
            # 2.2判断$num是否为纯数字
            y=$(echo $num | sed 's/[0-9]//g')
            
            
            # 说明:
            # 就是通过sed命令,把变量num值中的每一个字符,只要是0-9的内容,就替换为空。
            # 最后如果y的值最后为空,证明num变量中的内容全部为数字,因为全部被替换了。
            # 如果y的值最后不为空,证明num变量中的内容有非数字,即num非纯数字。
            
            
            # 如果变量y的值为空,证明num变量是数字
            if [ -z "$y" ]  
                then 
                    # 2.3循环num变量指定的次数,添加用户
                    for((i=1;i<=$num;i=i+1))
                        do
                            # 2.3.1添加用户,用户名为变量name的值加变量i的数字
                            /usr/sbin/useradd $name$i &>/dev/null
                            # 2.3.2给用户设定初始密码为变量pass的值   
                            echo $pass | /usr/bin/passwd --stdin $name$i &>/dev/null
                            # 2.3.3强制用户登录之后修改密码
                            chage -d 0 $name$i &>/dev/null
    
                        done
            fi  
    fi      
            
    

    7、练习:批量删除用户

    需求:删除系统中所有的普通用户。

    # 创建脚本文件userdel.sh
    [root@localhost ~]# vim sh/userdel.sh
    
    # 批量删除普通用户
    # 开始编写脚本文件
    
    #!/bin/bash
    
    # 1.获取所有普通用户的用户名
    # 读取用户信息文件,提取可以登录用户,
    # 取消root用户,截取第一列用户名
    user=$(cat /etc/passwd | grep "/bin/bash" | grep -v "root" | cut -d ":" -f 1)   
    
    # 2.删除普通用户
    # 执行循环,有多少个普通用户,循环多少次
    for i in $user
        do 
            #每次循环,删除指定普通用户
            userdel -r $i &>/dev/null
        done
    

    相关文章

      网友评论

        本文标题:【现学现忘&Shell流程控制】— 48.for循环练习2

        本文链接:https://www.haomeiwen.com/subject/qyduvktx.html