菜单

系统实战模拟监察和控制MySQL服务shell脚本小结

2019年5月12日 - 皇家赌场系统
[root@oldboy scripts]# cat check_db03.sh
#!/bin/sh
#created by oldboy
#mail:oldboy521@gmail.com
PortNum=`nmap 10.0.0.189 -p 80|grep open|wc -l`
if [ $PortNum -eq 1 ]
then
 echo "mysqld is running."
else
 echo "mysqld is stoped."
fi

法二:条件表明式用法

<?php
/*
#this scripts is created by oldboy
#oldboy QQ:31333741
#site:http://www.etiantian.org
#blog:http://oldboy.blog.51cto.com
#oldboy trainning QQ group: 208160987 226199307 44246017
*/
  $link_id=mysql_connect('10.0.0.4','oldboy','oldboy123') or mysql_error();
  if($link_id){
   echo "mysql successful by oldboy !";
  }else{
   echo mysql_error();
  }
?>

法一:端口检查法==>适合在远端服务器使用(本地也适合)

1)grep过滤的字符串,不要包罗在文件名里,例:grep mysql
,文件名叫check_mysql.sh 就不太好。相比较好的公文名如:
-rw-r–r– 1 root root  236 Sep  9 22:19 check_db01.sh
-rw-r–r– 1 root root  293 Sep  9 22:34 check_db02.sh
-rw-r–r– 1 root root  212 Sep  9 22:49 check_db03.sh
2)当语法没非凡只是结果不科学,能够选用上面包车型地铁诀窍排查:
   a)在变量定义的前边打字与印刷变量结果,看和事实上结果是不是一样,如:
     echo $PortNum $ProcessNum
     exit 1
   b) sh -x
check_db02.sh的法子,追踪脚本施行进度,越来越多的调节和测试方案见后边的SHELL脚本调节和测试精讲。
叁)决断远端mysql服务是或不是正规的章程

二)进度加端口判别法==>仅符合数据库本地利用

你恐怕感兴趣的稿子:

如上的主意唯有是粗略的论断,那么上面给出3个集判定,管理,及报告警察方于寥寥的较标准的mysql检验和核查查管理理脚本。
四)较专门的学业mysql检验和侦察查管理理脚本的缓和方案

[root@oldboy scripts]# cat check_db01_1.sh
#!/bin/sh
#created by oldboy
#mail:oldboy521@gmail.com

PortNum=`netstat -lnt|grep 3306|wc -l`
#PortNum=`nmap 10.0.0.189 -p 3306|grep open|wc -l`
[ $PortNum -eq 1 ] && echo "mysqld is running."||echo "mysqld is stoped."
[root@oldboy scripts]# cat check_db01.sh
#!/bin/sh
#created by oldboy
#mail:oldboy521@gmail.com
PortNum=`netstat -lnt|grep 3306|wc -l`
if [ $PortNum -eq 1 ]
then
 echo "mysqld is running."
else
 echo "mysqld is stoped."
fi
[root@oldboy scripts]# cat check_db04.sh
#!/bin/sh
#created by oldboy
#mail:oldboy521@gmail.com

mysql -S /data/3306/mysql.sock -e "select version();" >/dev/null 2>&1
if [ $? -eq 0 ]
then
 echo "mysqld is running."
else
 echo "mysqld is stoped."
fi

技艺:脚本调节和测试手艺

一)端口剖断法==>仅符合数据库本地利用

技巧:
1)使用web 连接账号模拟访问。
法3:模拟用户选拔程序U卡宴L的格局判定

晋升:端口的行使方式还有很各种,蕴含不防止上面地址的三种方法,
例如:还是能够用nagios的check_tcp插件等法。
法2:模拟用户(包涵web
server)访问方法==>适合在远端服务器使用(本地也符合)

法叁:使用系统函数字突显示法

法1:if条件剖断格局

[root@oldboy scripts]# cat check_db01_2.sh
#!/bin/sh
#created by oldboy
#mail:oldboy521@gmail.com
#load functions
[ -f /etc/init.d/functions ] && . /etc/init.d/functions
PortNum=`netstat -lnt|grep 3306|wc -l`
if [ $PortNum -eq 1 ]
then
 action "mysqld is running." /bin/true
else
 action "mysqld is stoped." /bin/false
fi
#!/bin/bash 
#created by oldboy QQ 49000448 
#date:20100918 
MYUSER=root 
MYPASS="oldboy" 
MYSOCK=/data/3306/mysql.sock 
MySQL_STARTUP="/data/3306/mysql" 
LOG_PATH=/tmp 
LOG_FILE=${LOG_PATH}/mysqllogs_`date +%F`.log 
MYSQL_PATH=/usr/local/mysql/bin 
MYSQL_CMD="$MYSQL_PATH/mysql -u$MYUSER -p$MYPASS -S $MYSOCK" 
#→全变量定义方式,显得更专业。 
$MYSQL_CMD -e "select version();" >/dev/null 2>&1 
if [ $? -eq 0 ] 
then 
echo "MySQL is running! " 
exit 0 
else 
$MySQL_STARTUP start >$LOG_FILE#→日志也是变量。 
sleep 5; 
$MYSQL_CMD -e "select version();" >/dev/null 2>&1 
if [ $? -ne 0 ] 
then 
for num in `seq 10`#→通过for循环来杀死mysqld,真正杀死则退出循环或每隔个两秒杀一次,一共杀10次。 
do 
killall mysqld>/dev/null 2>&1 
[ $? -ne 0 ] && break; 
sleep 2 
done 
$MySQL_STARTUP start >>$LOG_FILE 
fi 
$MYSQL_CMD -e "select version();" >/dev/null 2>&1 && Status="restarted" || Status="unknown"#→这个逻辑更准确。 
echo "MySQL status is $Status" >>$LOG_FILE 
mail -s "MySQL status is $Status" 31333741@qq.com < $LOG_FILE 
#→把上面的Status作为结果标题传给邮件,当然你可以做短信,语音通话报警。 
fi 
exit 
[root@oldboy scripts]# cat check_db02.sh
#!/bin/sh
#created by oldboy
#mail:oldboy521@gmail.com

PortNum=`netstat -lnt|grep 3306|wc -l`
ProcessNum=`ps -ef|grep mysql|grep -v grep| wc -l`
#echo $PortNum $ProcessNum
#exit 1

if [ $PortNum -eq 1 -a $ProcessNum -eq 2 ]
then
 echo "mysqld is running."
else
 echo "mysqld is stoped."
fi

提醒:借使不放心还足以而且增添模拟用户访问。

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图