首页 > 代码库 > 实战:判断mysql中当前用户的连接数-分组筛选

实战:判断mysql中当前用户的连接数-分组筛选

#connets.sh
#!/bin/sh
#ocpyang@126.com
#根据输入参数u或d来显示出对应的用户名或数据库名中用户的连接数.
#也可以输入u 具体用户名或d 具体数据库名做进一步的分组筛选

 

 


#set mysql evn
MYSQL_USER=system  #mysql的用户名
MYSQL_PASS=‘password‘  #mysql的登录用户密码
MYSQL_HOST=192.168.2.188


export black=‘\033[0m‘
export boldblack=‘\033[1;0m‘
export red=‘\033[31m‘
export boldred=‘\033[1;31m‘
export green=‘\033[32m‘
export boldgreen=‘\033[1;32m‘
export yellow=‘\033[33m‘
export boldyellow=‘\033[1;33m‘
export blue=‘\033[34m‘
export boldblue=‘\033[1;34m‘
export magenta=‘\033[35m‘
export boldmagenta=‘\033[1;35m‘
export cyan=‘\033[36m‘
export boldcyan=‘\033[1;36m‘
export white=‘\033[37m‘
export boldwhite=‘\033[1;37m‘


cecho ()

## -- Function to easliy print colored text -- ##
 
 # Color-echo.
 # 参数 $1 = message
 # 参数 $2 = color
{
local default_msg="No message passed."

message=${1:-$default_msg} # 如果$1没有输入则为默认值default_msg.
color=${2:-black}  # 如果$1没有输入则为默认值black.

case $color in
 black)
   printf "$black" ;;
 boldblack)
   printf "$boldblack" ;;
 red)
   printf "$red" ;;
 boldred)
   printf "$boldred" ;;
 green)
   printf "$green" ;;
 boldgreen)
   printf "$boldgreen" ;;
 yellow)
   printf "$yellow" ;;
 boldyellow)
   printf "$boldyellow" ;;
 blue)
   printf "$blue" ;;
 boldblue)
   printf "$boldblue" ;;
 magenta)
   printf "$magenta" ;;
 boldmagenta)
   printf "$boldmagenta" ;;
 cyan)
   printf "$cyan" ;;
 boldcyan)
   printf "$boldcyan" ;;
 white)
   printf "$white" ;;
 boldwhite)
   printf "$boldwhite" ;;
esac
  printf "%s\n"  "$message"
  tput sgr0   # tput sgr0即恢复默认值
  printf "$black"

return
}


cechon ()  

 # Color-echo.
 # 参数1 $1 = message
 # 参数2 $2 = color
{
local default_msg="No message passed."
    # Doesn‘t really need to be a local variable.

message=${1:-$default_msg} # 如果$1没有输入则为默认值default_msg.
color=${2:-black}  # 如果$1没有输入则为默认值black.

case $color in
 black)
  printf "$black" ;;
 boldblack)
  printf "$boldblack" ;;
 red)
  printf "$red" ;;
 boldred)
  printf "$boldred" ;;
 green)
  printf "$green" ;;
 boldgreen)
  printf "$boldgreen" ;;
 yellow)
  printf "$yellow" ;;
 boldyellow)
  printf "$boldyellow" ;;
 blue)
  printf "$blue" ;;
 boldblue)
  printf "$boldblue" ;;
 magenta)
  printf "$magenta" ;;
 boldmagenta)
  printf "$boldmagenta" ;;
 cyan)
  printf "$cyan" ;;
 boldcyan)
  printf "$boldcyan" ;;
 white)
  printf "$white" ;;
 boldwhite)
  printf "$boldwhite" ;;
esac
  printf "%s"  "$message"
  tput sgr0   # tput sgr0即恢复默认值
  printf "$black"

return
}

 

 


if [ "$#" -lt 1 ];then
echo "**********************************"
echo "you must input paraters"
echo "**********************************"
echo "USAGE01: $0 d |$0 d database_name"
echo "eg01: $0 d|$0 d mysql"
echo "USAGE02: $0 u  |$0 u username"
echo "eg02: $0 u  |$0 u wind"
exit 1;
fi

#Case conversion
ipt=`echo $1 |tr ‘[a-z]‘ ‘[A-Z]‘`


#source /usr/local/mysql/scripts/mysql_env.ini

logfiledate_init="tmpinit.`date +%Y%m%d%H%M%S`.txt"

logfiledate_midd="tmpmidd.`date +%Y%m%d%H%M%S`.txt"

judegedate_01="judegedate01.`date +%Y%m%d%H%M%S`.txt"

judegedate_02="judegedate02.`date +%Y%m%d%H%M%S`.txt"

mysql -h${MYSQL_HOST} -u${MYSQL_USER} -p${MYSQL_PASS} -e"show processlist;" >${logfiledate_init}

 

if [ "$#" -eq 1 ]; then
 if [ "$ipt" = ‘D‘ ];then
 awk ‘{tt[$4]++} BEGIN { printf  "%-20s %-20s\n" ,"dbname","connect";} END{for (i in tt) printf "%-20s %-20s\n" ,i,tt[i]}‘ ${logfiledate_init}  | grep -v "NULL"
 elif  [ "$ipt" = ‘U‘ ];then
 awk ‘{tt[$2]++} BEGIN { printf  "%-20s %-20s\n" ,"username","connect";} END{for (i in tt) printf "%-20s %-20s\n" ,i,tt[i]}‘ ${logfiledate_init}  | grep -v "NULL"
 else
 cechon "输入错误!" red
 echo "                              "
 fi
elif [ "$#" -eq 2 ]; then
 grep -i $2  ${logfiledate_init} > ${logfiledate_midd}
 if [ "$ipt" = ‘D‘  ];then
 SCHEMA_JUDEGE01="select schema_name from information_schema.schemata where schema_name=‘$2‘;"
 mysql -h${MYSQL_HOST} -u${MYSQL_USER} -p${MYSQL_PASS} -e"${SCHEMA_JUDEGE01}" >${judegedate_01}
  if [ ! -s "${judegedate_01}" ];then
   cechon "you input schema_name $2 not exits,pleae check your schema_name" red
   rm -rf ${SCHEMA_JUDEGE01}
   exit 0
  else
  awk ‘{tt[$4]++} BEGIN { printf  "%-20s %-20s\n" ,"dbname","connect";} END{for (i in tt) printf "%-20s %-20s\n" ,i,tt[i]}‘ ${logfiledate_midd}  | grep -v "NULL"
  fi
 elif  [ "$ipt" = ‘U‘ ];then
 SCHEMA_JUDEGE02="select user from mysql.user where user=‘$2‘;"
 mysql -h${MYSQL_HOST} -u${MYSQL_USER} -p${MYSQL_PASS} -e"${SCHEMA_JUDEGE02}" >${judegedate_02}
  if [ ! -s "${judegedate_02}" ];then
  cechon "you input username $2 not exits,pleae check your user_name" red
  rm -rf ${SCHEMA_JUDEGE02}
  exit 0
  else
  awk ‘{tt[$2]++} BEGIN { printf  "%-20s %-20s\n" ,"username","connect";} END{for (i in tt) printf "%-20s %-20s\n" ,i,tt[i]}‘ ${logfiledate_midd}  | grep -v "NULL"
  fi
 else
 cechon  "输入错误!" red
 echo "                              "
 fi
fi
 

#清除临时文件
rm -rf ${logfiledate_init}
rm -rf ${logfiledate_midd}
rm -rf ${judegedate_01}
rm -rf ${judegedate_02}