zoukankan      html  css  js  c++  java
  • 实战:推断mysql中当前用户的连接数-分组筛选

    #connets.sh
    #!/bin/sh
    #ocpyang@126.com
    #依据输入參数u或d来显示出相应的username或数据库名中用户的连接数.
    #也能够输入u 详细username或d 详细数据库名做进一步的分组筛选


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


    export black='33[0m'
    export boldblack='33[1;0m'
    export red='33[31m'
    export boldred='33[1;31m'
    export green='33[32m'
    export boldgreen='33[1;32m'
    export yellow='33[33m'
    export boldyellow='33[1;33m'
    export blue='33[34m'
    export boldblue='33[1;34m'
    export magenta='33[35m'
    export boldmagenta='33[1;35m'
    export cyan='33[36m'
    export boldcyan='33[1;36m'
    export white='33[37m'
    export boldwhite='33[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 "  "$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 " ,"dbname","connect";} END{for (i in tt) printf "%-20s %-20s " ,i,tt[i]}' ${logfiledate_init}  | grep -v "NULL"
     elif  [ "$ipt" = 'U' ];then
     awk '{tt[$2]++} BEGIN { printf  "%-20s %-20s " ,"username","connect";} END{for (i in tt) printf "%-20s %-20s " ,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 " ,"dbname","connect";} END{for (i in tt) printf "%-20s %-20s " ,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 " ,"username","connect";} END{for (i in tt) printf "%-20s %-20s " ,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}

  • 相关阅读:
    CPP Info Memo part3
    在Google搜索结果显示原始链接(转自 月光博客)
    libc 之 locales
    Git 分支管理与本地 repository 创建
    py2exe issue: ImportError: No module named _fontdata_enc_winansi (http://stackoverflow.com/)
    CPP Info Memo (Part 1)
    CPP Info Memo part2
    HOWTO: Increase write speed by 'aligning' FAT32(通过对齐 FAT32 提高U盘访问速度, 转载)
    (转载)Gentoo中文man乱码
    如何选择开源许可证?(转载)
  • 原文地址:https://www.cnblogs.com/hrhguanli/p/3838444.html
Copyright © 2011-2022 走看看