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
提供面试指导、模拟面试、简历项目优化和职业规划等
负责SRE团队,运维架构(DevOps)、微服务流量治理(K8s、Ingress)、稳定性和可测性系统建设(Prometheus、EFK、Loki)

浙公网安备 33010602011771号