#!/bin/bash
# auth : yoncan@qq.com
#date : 2013-11-05STATUS_OK=0STATUS_WARN=1STATUS_CRITICAL=2STATUS_UNKNOWN=3export PATH=$PATH:/usr/local/bin:/usr/bin:/bin
_tmp_file=`mktemp /tmp/XXXXXXX`
# ########################################################################
# Set up default args
# ########################################################################
_default_user="ptcheck"_default_passwd="you_password"_default_host="127.0.0.1"_default_port="3306"# ########################################################################
# Get Help
# ########################################################################if [ "${1}" = "--help" -o "${#}" = "0"];then
echo "$0 -u -p -h -P "exit $STATUS_WARNfi# ########################################################################
# Get Options
# ########################################################################whilegetopts :u:p:h:P: OPTdo
case "$OPT" inu)
_user=$OPTARG ;;
p)
_pass=$OPTARG ;;
h)
_host=$OPTARG ;;
P)
_port=$OPTARG ;;
\?)echo 'unknow options' &&exit ;;esac
done_user=${_user:-"$_default_user"}
_pass=${_pass:-"$_default_passwd"}
_host=${_host:-"$_default_host"}
_port=${_port:-"$_default_port"}
# ########################################################################
# Check MySQL Running?# ########################################################################
_check_mysql_running() {
_run_status=`mysqladmin -u${_user} -p${_pass} -h${_host} -P${_port} ping 2>/dev/null`if [ "${_run_status}" != "mysqld is alive" ];then
echo 'Crit: mysql is not running..'exit $STATUS_CRITICALfi}
# ########################################################################
# Get MySQL Running Status
# ########################################################################
_get_slave_status() {
mysql-u${_user} -p${_pass} -h${_host} -P${_port} -e "show slave status\G" >${_tmp_file}if [ ! -s ${_tmp_file} ];then
echo "Unknow: get Slave status Unknow"exit $STATUS_UNKNOWNfi}
# ########################################################################
# Check MySQL Running Status
# ########################################################################
_check_slave_status(){
_slave_status=`awk -F '[ ]+|:' '/Slave.*Running/{printf("%s",$NF)}'$_tmp_file`if [ "$_slave_status" == "YesYes" ];then
echo "OK: MySQL Slave Running OK"exit $STATUS_OKelif [ "$_slave_status" == "NoNo" ];then
echo "Crit: MySQL Slave Not Running"exit $STATUS_CRITICALelif [ "$_slave_status" == "YesNo" ];then
echo "Warn: MySQL slave_sql_thread Not Running"exit $STATUS_WARNelif [ "$_slave_status" == "NoYes" ];then
echo "Warn: MySQL slave_io_thread Not Running"exit $STATUS_WARNelse
echo "Unknown: MySQL slave status is Unknown"exit $STATUS_UNKNOWNfi##clear tmp file
rm -f $_tmp_file
}
# ########################################################################
# Main
# ########################################################################
_main(){
_check_mysql_running
_get_slave_status
_check_slave_status
}
_main