shell用户管理-高级版本

shell用户管理

编写一个shell程序,能够对系统的用户进行增加、删除、查找、显示特定用户信息等功能,要求能够真正操作系统用户,具体功能:

在主shell脚本文件(menu文件),要有一个多操作选项的菜单以便用户从中选择

1)显示当前所有的用户记录
2)查询兵显示特定的用户记录
3)添加用户
4)删除用户
5)批量添加用户user01~user10
6)批量删除用户
7)批量修改用户密码
8)退出

#!/bin/bash
#2020-04-30

function adduserstatus(){
     if [ $? -eq 0 ];then
         echo "useradd $1 succ"
     else
         echo "useradd $1 failed"
     fi
}
#adduser
function adduser(){
    read -p "Please Username:" user
    id $user >/dev/null 2>&1
    if [ $? -ne 0 ];then
        pwd="123456"
        useradd  $user
        echo $pwd | passwd --stdin $user
        adduserstatus $user
    else
        echo  "$user user exist"
        id $user
     fi

}
#batchadduser
function batchadduser(){
    read -p "Please enter Username Prefix [user]:" user
    read -p "Number of users created:" num
    pwd="123456"
    for i in `seq -w $num`
    do
         username=${user}$i
         id $username >/dev/null 2>&1
        if [ $? -ne 0 ];then
             useradd $username
             echo $pwd | passwd --stdin $username
             adduserstatus $username
        else
            echo "user:$username exists"
        fi
    done
}

function delstatus(){
     if [ $? -eq 0 ];then
                echo "del user $1 succ"
      else
                echo "del user $1 falid"
       fi
}
#deluser
function deluser(){
    read -p "Please Username:" user
    id $user >/dev/null 2>&1
    if [ $? -ne 0 ];then
        echo "Not Found user $user"
        return
    else
        userdel -r $user
        delstatus $user
    fi
}
#batchdeluser
function batchdeluser(){
    read -p "Please enter Username Prefix [user]:" user
    read -p "Number of users created:" num
    for i in `seq -w $num`
    do
         username=${user}$i
         id $username >/dev/null 2>&1
         if [ $? -eq 0 ];then
             userdel -r $username
             delstatus $username
         else
            echo "username:$username not exists"
        fi
    done
}

#batchmodifypwd
function batchmodifypwd(){
    read -p "Please enter Username Prefix [user]:" user
    read -p "Number of users created:" num
    read -p "Please enter your password:" pwd
    for i in `seq -w $num`
    do
         username=${user}$i
         id $username >/dev/null 2>&1
         if [ $? -eq 0 ];then
             echo $pwd | passwd --stdin $username
             if [ $? -eq 0 ];then
                echo "modify $username pwd succ"
             else
                echo "modify $username pwd failed"
             fi

         else
            echo "username:$username not exists"
        fi
    done
}


#showlistusers
function showlistusers(){
    cat /etc/passwd | awk -F: '{print $1}'
}

#finduser
function finduser(){
    read -p "Please Username:" user
    id $user >/dev/null 2>&1
    if [ $? -ne 0 ];then
        echo "Not Found user $user"
        return
     fi
     id $user
}

function menu(){
    while [ 1 ];do
cat << EOF
----------------------------------------
|***************用户管理***************|
----------------------------------------
`echo -e "\033[35m 1)显示当前所有的用户记录\033[0m"`
`echo -e "\033[35m 2)查询兵显示特定的用户记录\033[0m"`
`echo -e "\033[35m 3)添加用户\033[0m"`
`echo -e "\033[35m 4)删除用户\033[0m"`
`echo -e "\033[35m 5)批量添加用户user01~user10\033[0m"`
`echo -e "\033[35m 6)批量删除用户\033[0m"`
`echo -e "\033[35m 7)批量修改用户密码\033[0m"`
`echo -e "\033[35m 8)退出\033[0m"`
EOF
            read -p "Please:" num1
            case $num1 in
            1)
                echo -e "\033[35m 1)显示当前所有的用户记录\033[0m"
                showlistusers
            ;;
            2)
                  echo -e "\033[35m 2)查询兵显示特定的用户记录\033[0m"
                  finduser
            ;;
            3)
                  echo -e "\033[35m 3)添加用户\033[0m"
                  adduser
            ;;
            4)
                echo -e "\033[35m 4)删除用户\033[0m"
                deluser
            ;;
            5)
                echo -e "\033[35m 5)批量添加用户user01~user10\033[0m"
                batchadduser
            ;;
            6)
                 echo -e "\033[35m 6)批量删除用户\033[0m"

                batchdeluser
            ;;
             7)
                 echo -e "\033[35m 7)批量修改用户密码\033[0m"
                batchmodifypwd
            ;;
            8)
             exit 0
            esac
    done
}

function main(){
    menu
}

main
#!/usr/bin/env bash

###############################
# 脚本名称 : userManager.sh
# 脚本功能 : 账号管理
# 脚本参数 : 无
# 创建时间 : 2020-05-1
# 版    本 : v1.0
###############################

# 提示信息 []<-()
function menu(){
cat <<EOF
    --------用户管理程序-----------
		1.显示当前所有的用户记录
		2.查询显示特定的用户记录
		3.创建用户
		4.删除用户
		5.批量添加用户
		6.批量删除用户
		7.批量修改用户密码
		8.退出程序
EOF

}
#显示系统所有的用户
function list_users(){
    awk -F: '{print "id "$1}' /etc/passwd | bash
}

#查询特定的用户记录
function query_users(){
    read -p "please input a username:" username
    if id -u $username >/dev/null 2>&1; then
            id  $username
    else
            echo "user $username does not exist"
    fi
}


# 创建账户 []<-(user:string,passwd:string)
function create_user(){
    user="$1"
    pwd="$2"

    useradd "$user" # 添加账户
    if [ $? -ne 0 ];then
        echo "user exist"
        return
    fi
    echo "$pwd" | passwd --stdin "$user" # 设置密码

    if [[ "$?" == 0  ]];
       then
        echo "用户已经创建成功"

    fi
}

# 批量创建账户 user001 user002等
function create_users(){
    user="$1"
    pwd="$2"
    num="$3"
    for ((i=1;i<=$num;i++))
    do
        username=${user}${i}
        useradd "$username" # 添加账户
        if [ $? -ne 0 ];then
            echo "user exist"
        fi
        echo "$pwd" | passwd --stdin "$username" # 设置密码

        if [[ "$?" == 0  ]];
           then
            echo "用户已经创建成功"
        fi
    done

}

# 删除账户 []<-(user:string)
function delete_user(){
    user="$1"
    userdel -r "$user" # 删除用户

    if [[ $?  -eq 0 ]];
       then
        echo "已经删除${user}用户"
    else
            echo "user $username does not exist"
    fi
}

# 批量删除账户 []<-(user:string)
function delete_users(){
    user="$1"
    num="$2"
     for ((i=1;i<=$num;i++))
     do
       username=${user}${i}
       userdel -r "${username}" # 删除用户
        if [[ $?  -eq 0 ]];
           then
            echo "已经删除${username}用户"
        else
                echo "user $username does not exist"
        fi
     done

}

# 批量修改账户密码 user001 user002等
function passwd_users(){
    user="$1"
    pwd="$2"
    num="$3"
    for ((i=1;i<=$num;i++))
    do
        username=${user}${i}
        id "$username" # 查看账户是否存在

        if [ $? -ne 0 ];
        then
            echo "user $username exist"
            return
        fi
        echo "$pwd" | passwd --stdin "$username" # 设置密码

        if [[ "$?" == 0  ]];
           then
            echo "用户$username 密码修改成功"
        fi
    done

}




# 退出脚本 []<-()
function exit_script(){
    read -p "是否退出脚本(yes)" tu

    if [[ "$tu" == "yes" ]];
       then
        exit

    fi
}

# 主函数 []<-()
function main(){
while [ 1 ] ;
do
    menu    # 提示信息

    read -p "请输入操作选择(1-8):" sn

    case "$sn" in
         1)
            list_users
            echo ""
            ;;
         2)
            query_users
            echo ""
            ;;
        3)
            read -p "请输入需要创建的用户名:" uname
            read -p "请给该账户设置一个密码:" passwd
            create_user "$uname" "$passwd"
        ;;
        4)
            read -p "请输入需要删除的用户名:" uname
            delete_user "$uname"
        ;;
        5)
            read -p "请输入需要创建的用户名:" uname
            read -p "请输入创建的个数:" num
            passwd="123456"
           create_users "$uname" "$passwd" "$num"

        ;;
        6)
            read -p "请输入需要删除的用户名:" uname
            read -p "请输入需要删除的个数:" num
            delete_users "$uname" "$num"
        ;;
        7)
             read -p "请输入需要修改的用户名:" uname
            read -p "请给该账户设置一个密码:" passwd
            read -p "请输入修改的个数:" num
            passwd_users $uname $passwd $num
        ;;
        8)
            printf "退出程序\n"
            exit_script
        ;;
    esac
done
}

# 函数运行
main
posted @ 2020-04-30 22:25  运维面试辅导  阅读(693)  评论(0)    收藏  举报