学习linux是从基础的命令开始的,当熟悉命令后,我们就得学习shell脚本的编写。在实际运维中,我们不可能一直盯着服务器看,机器式的维护,而是通过脚本,实现自动化运维,这也是运维的一种趋势。本菜鸟也是刚刚接触shell脚本。今天兴致大发,就写来一个简单的”系统用户管理菜单“脚本

该脚本功能如下:

   1.可以实现增加删除用户;

   2.判断用户是否已设置密码;

   3.并能选择用户进行设置密码;

   4.查询和更改uid、gid;

   5.统计用户数,系统用户和普通用户数;


该脚本的代码如下:


#!/bin/bash

#Author:***
#Date:2014/05/14

#mail:690968964@qq.com


# This is system user admin menu
menu(){
   echo -e "\t\t\tSystem user admin menu"
   echo -e "\t\t1.add user"
   echo -e "\t\t2.del user"
   echo -e "\t\t3.query user information"
   echo -e "\t\t4.reset user passwd"
   echo -e "\t\t5.modify user information"
   echo -e "\t\t6.all user information"
   echo -e "\t\t7.exit the program\n"
}

Useradd(){
   echo -n "please input you want add username:"
       read username
   useradd $username
       if [ $? -eq 0 ]
       then
           echo "OK.add user "
       else
         echo "add user error"
         return 1
       fi
}
Userdel(){
   echo -n "Please input you want delete username:"
   read username    
   userdel -r $username
   if [ $? -eq 0 ]
   then
       echo "OK,del user"
   else
       echo "del user error"
       return 1
    fi
}
query_user_info(){
   id $username | awk '{print $1,$2}'
   cat /etc/passwd | grep $username |awk -F: '{print $6}'
   Passwd=`cat /etc/shadow | grep $username |awk -F: '{print $2}'`
   if [ "$Passwd" == "!!" ];then
       echo "$username没有设置密码"
   else
       echo "$username设置了密码"
   fi
}
reste_user(){
   cat /etc/shadow |awk '/!!/'| awk -F: '{print $1}'
   read -p "请输入你选择的用户:" username
   passwd $username

}

modify_user_info(){
   cat /etc/passwd | awk -F: '{print $1}'
   read -p "请输入你选择的用户:" username
   usermod -u 600 $username
   groupmod -g 700 $username
   secret=`cat /etc/shadow | grep $username |awk -F: '{print $2}'`
       if [ "$secret" == "!!" ];then
           passwd $username    
   else
                 echo "$username设置了密码"
       fi
}
all_user_info(){
   user_all=`cat /etc/passwd | awk -F: '{print $1}' | wc -l`
   user_sys=`cat /etc/passwd | awk -F: '$3<500{print $1}'| wc -l `
   user_pro=`cat /etc/passwd | awk -F: '$3>=500 && $3<60000{print $1}'| wc -l`
   echo "所有用户的数量为:"$user_all
   echo "系统用户的数量为:"$user_sys
   echo "程序用户的数量为:"$user_pro
}

main(){
while [ 1 ]
do
   menu
   echo -n "Enter your option:"
   read option
   case $option in
   "1")
       Useradd
               if [ $? -eq 1 ]
               then
                   exit 2

               fi
       ;;
   "2")
       Userdel
       if [ $? -eq 1 ]
       then
           exit 2

       fi
       ;;
   "3")
       query_user_info
       ;;
   "4")
       reste_user
       ;;
   "5")
       modify_user_info
       ;;
   "6")
       all_user_info
       ;;
   "7")
       break
       ;;
   "*")
       break
       ;;
   esac        
done
}
main;


请求各位大侠指正错误,并指导完善,谢谢!