增加或删除用户的shell脚本

题目要求
写一个支持选项的增加或删除用户的shell脚本,具体要求如下:
1. 只支持三个选项:'--del','--add','--help',输入其他选项报错。
2. 使用'--add'时,需要验证用户名是否存在,存在则反馈存在,且不添加。 不存在则创建该用户,需要设置与该用户名相同的密码。
3. 使用'--del'时,需要验证用户名是否存在,存在则删除用户及其家目录。不存在则反馈该用户不存在。 
4. --help选项反馈出使用方法。
5. 能用echo $?检测脚本执行情况,成功删除或添加用户为0,不成功为非0正整数。
6. 能以英文逗号分割,一次性添加或者删除多个用户。例如 adddel.sh --add user1,user2,user3

参考答案

复制代码
#!/bin/baash
if [ $# -eq 0 ] || [ $# -gt 2 ]
then
    echo "Wrong, use bash $0 --add username, or bash $0 --del username or bash $0 --help"
    exit
fi

ex_user()
{
    if ! id $1 2>/dev/null >/dev/null
    then
    useradd $1 && echo "$1 add successful."
    else
    echo $1 exist.
    fi
}

notex_user()
{
    if id $1 2>/dev/null >/dev/null
    then
    userdel $1 && echo "$1 delete successful."
    else
    echo $1 not exist.
    fi
}
    

case $1 in 
    --add)
    if [ $# -eq 1 ]
    then
        echo "Wrong, use bash $0 --add user or bash    $0 --add user1,user2,user3..."
        exit
    else
        n=`echo $2| awk -F ',' '{print NF}'`
        if [ $n -gt 1 ]
        then
            for i in `seq 1 $n`
        do
            username=`echo $2 |awk -v j=$i -F ',' '{print $j}'`
            ex_user $username
            done
        else
        ex_user $2
        fi
    fi
    ;;
    --del)
    if  [ $# -eq 1 ]
        then
            echo "Wrong, use bash $0 --del user or bash $0 --del user1,user2,user3..."
            exit
        else
            n=`echo $2| awk -F ',' '{print NF}'`
            if [ $n -gt 1 ]
            then
                for i in `seq 1 $n`
                do
                    username=`echo $2 |awk -v j=$i -F ',' '{print $j}'`
            notex_user $username
                done
            else
        notex_user $2
            fi
        fi
        ;;
    --help)
        if  [ $# -ne 1 ]
        then
            echo "Wrong, use bash $0 --help"
            exit
        else

    echo "Use bash $0 --add username or bash $0 --add user1,user2,user3... add user."
    echo "    bash $0 --del username -r bash $0 --del user1,user2,user3... delete user."
    echo "    bash $0 --help print this info."
    fi
    ;;
    *)
    echo "Wrong, use bash $0 --add username, or bash $0 --del username or bash $0 --help"
    ;;
esac
复制代码

 

posted @   星火撩原  阅读(82)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
历史上的今天:
2020-02-22 Ceph的工作原理及流程
2020-02-22 DOCKER使用 FLANNEL(ETCD+FLANNEL)网络
2020-02-22 Linux-GitLab安装及汉化
2020-02-22 熟悉Jenkins
点击右上角即可分享
微信分享提示