一个网站故障排查的、代码更新的简便脚本

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介:

故障排错脚本

由于近来公司的服务器经常会出点小问题,基于各种原因要去排错。这里我用python写了一个脚本,主要四调用os模块操作。有一个是要统计mysql最大连接数的。因为好像python不支持"show processlist",所以自己写了一个模块mysqlconn.py。放在/python目录下。这个模块的作用主要是执行“sh /python/mysqlconn.sh”.这个脚本。然后脚本会生成一个叫mysqlconn.txt文件放到:/python/mysqlconn.txt下面。主要是统计当前连接数。和mysql默认允许的最大连接数。

最后一个要说的就是,我的代码更新目录是:/www/zhs/tool(测试环境)。更新之前上次到:/python目录,然后用for去统计文件。先备份到/tmp的目录下:下面是部分内容效果(代码比较简单,这里不做说明开始部分的登录账号是:xiaoluo.密码是:123456):

wKioL1Q_kdHAzA_TAABmOM6Kbrg023.jpg

wKioL1Q_khOCMg7ZAACXBeIlU58349.jpg

代码展示:(复制即可使用)

#!/usr/bin/env python
import os
import fileinput
import mysqlconn
while True:
        name=raw_input("please input name:").strip()
        if name !="xiaoluo":
                        print "please try agine:"
                        continue
        password=raw_input("please input your password:").strip()
        if password !="123456":
                        print "please try agine:"
                        continue
        break

while True:
        print "1.webserver:[1]"
        print "2.mysqlserver:[2]"
        print "3.update code:[3]"

        choose=raw_input("your server is:")
        if choose=="1":
                user=os.getlogin()
                print user
                userlogin=os.system("w | grep 192|wc -l")
                userlogin=raw_input('check your free io:[y/n](60)')  
                if userlogin=="y":
                        io=os.system("iostat|awk 'NR==4{print NF}'|cut -f 1 -d .|grep -v ^0")
#               print io
                else:
                        pass
                cpu=raw_input("check your free cpu:[y/n]")
                if cpu=="y":
                        cpu_idle=os.system("top -b -n 1 | grep Cpu | awk '{print 5}' | cut -f 1 -d .")                  else:                          pass                  swap=raw_input("check your free_swap:[y/n]")                  if swap=="y":                          free_swap=os.system("/usr/bin/free -m|grep Mem|awk '{print4}'")
                else:
                        pass
                web_load=raw_input("check your load:[y/n](18)")
                if web_load=="y":
                        web_load=os.system("uptime|awk '{print NF}'|cut -f 1 -d .")                  else:                          pass                  user_disk=raw_input("check your uses disk:[y/n]")                  if user_disk=="y":                          user_load=os.system("df -H|sort -k5nr|grep -vE 'Filesystem|tmpfs|cdrom'|awk '{print5 " " $1}'")

                else:
                        pass

                tcp_connection=raw_input("check your tcp connection:[y/n]" )
                if tcp_connection=="y":
                        tcp_connection=os.system("netstat -nat |grep 80|awk '{print 6}'|sort|uniq -c|sort -rn")                  else:                          pass                  top_ip=raw_input("check yout top ip connection:[y/n]")                  if top_ip=="y":                          top_ip=os.system("netstat -anlp|grep 80|grep tcp|awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -nr|head -n20")                  else:                          pass          if choose=="2":                  mysqluser=raw_input("please input mysql user:").strip()                  if len(mysqluser)==0:                          print "empty mysqluser,try again"                          continue                  else:                          pass                  mysqlpassword=raw_input("please input mysql password:").strip()                  if len(mysqlpassword)==0:                          print "empty mysqluser,try again"                          continue                  else:                          pass                  host=raw_input("please input mysql host:").strip()                  if len(host)==0:                           print "empty mysqluser,try again"                           continue                  else:                           pass                  user=os.getlogin()                  print user                  userlogin=os.system("w | grep 192|wc -l")                  userlogin=raw_input(' check your io:[y/n]')                  if userlogin=="y":                          io=os.system("iostat|awk 'NR==4{print $NF}'|cut -f 1 -d .|grep -v ^0")
#               print io
                else:
                        pass
                cpu=raw_input("check your free cpu:[y/n]")
                if cpu=="y":
                        cpu_idle=os.system("top -b -n 1 | grep Cpu | awk '{print 5}' | cut -f 1 -d .")                  else:                          pass                  swap=raw_input("check your free_swap:[y/n]")                  if swap=="y":                          free_swap=os.system("/usr/bin/free -m|grep Mem|awk '{print4}'")
                else:
                        pass
                web_load=raw_input("check your load:[y/n]")
                if web_load=="y":
                        web_load=os.system("uptime|awk '{print NF}'|cut -f 1 -d .")                  else:                          pass                  user_disk=raw_input("check your uses disk:[y/n]")                  if user_disk=="y":                          user_load=os.system("df -H|sort -k5nr|grep -vE 'Filesystem|tmpfs|cdrom'|awk '{print5 " " $1}'")

                else:
                        pass
                mysql_prolist=raw_input("check your mysql Curren connection:[y/n]")
                if mysql_prolist=="y":
                        f=open("/python/mysqlconn.txt")
                        u=f.readline()
                        print u
                mysql_MAX_prolist=raw_input("check your mysql max_connection:[y/n] ")
                if mysql_MAX_prolist=="y":
                        f1=open("/python/mysqlconn.txt")
                        u1=f.readlines()
                        for line in u1:
                                print line
        if choose=="3":
                name=raw_input("please input your well update package:(.tar)").strip()
                if len(name)==0:
                        print "empty mysqluser,try again"
                        continue
                else:
                        pass
#                       os.system("cd /python/%s" %(name))
                        w=os.listdir('/python/%s'%(name)) 
                        print w
#                       for line in w:
                        backup=os.system("mkdir /tmp/`date +%Y%m%d`")
                        for line in w:
                                os.system("cp -r /www/zhs/%s/%s /tmp/%s" %(name,line,backup))
                                os.system("cp -rf /python/%s/* /www/zhs/%s/" %(name,name))

第二、mysqlconn.py模块代码:

#!/usr/bin/env python
#xiaoluo
import os
os.system("sh /python/mysqlconn.sh")

第三、mysqlconn.sh脚本用来收集信息。在使用的时候根据自己服务器的ip地址修改一下就好了:

#!/bin/bash
#xiaoluo
#18878774260
mysql -uroot -p123456 -h 192.168.38.131 -e "show processlist"|grep -v localhost|wc -l > /python/mysqlconn.txt
mysql -uroot -p123456 -h 192.168.38.131 -e "show variables like 'max_connections'"|grep max | awk '{print$2}' >>/python/mysqlconn.txt










本文转自 小罗ge11 51CTO博客,原文链接:http://blog.51cto.com/xiaoluoge/1564892,如需转载请自行联系原作者
相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
打赏
0
0
0
0
235
分享
相关文章
一些适合性能测试脚本编写和维护的工具
一些适合性能测试脚本编写和维护的工具
169 59
使用Lua代码扩展上网行为管理软件的脚本功能
本文介绍了如何使用Lua脚本增强上网行为管理,包括过滤URL、记录用户访问日志、控制带宽和自动提交监控数据到网站。Lua是一种轻量级语言,适合编写扩展脚本。文中提供多个示例代码,如URL过滤器、用户活动日志记录器和带宽控制器,帮助用户根据需求定制网络管理功能。通过这些示例,用户可以快速掌握Lua在上网行为管理中的应用。
228 4
创建并使用自定义的Linux命令`autoupdate`来自动化软件更新
创建自定义Linux命令`autoupdate`简化系统更新流程。通过编写包含`apt update`, `apt upgrade`, `apt autoremove`和`apt clean`的bash脚本,实现一键自动化更新。将脚本添加到PATH环境变量,确保在任意目录可执行。适用于基于Debian/Ubuntu系统,其他发行版需调整命令。记得备份数据,必要时重启系统,并可按需扩展脚本功能。
|
11月前
网站维护页面404源码
网站维护页面404源码
86 0
网站维护页面404源码
自动化脚本如何编写?打算写个自动发布文章的脚本教程
作为一名程序员/开发者,我们经常需要处理重复性的任务,比如发布文章到多个媒体平台。为了提高效率,我们可以编写自动化脚本来完成这些任务。本文将介绍如何使用万媒易发多平台内容同步助手来自动发布文章。
Shell脚本编写:自动化监控上网行为软件的数据备份与恢复
在今天的数字时代,监控上网行为软件变得越来越重要。无论您是个人用户还是企业,了解和管理上网行为数据对于网络安全和资源优化至关重要。本文将介绍如何使用Shell脚本编写一个自动化数据备份与恢复系统,用于监控上网行为软件的数据,以及如何自动将这些数据提交到网站。
211 1
自定义警告规则:企业电脑行为监控软件的Lua脚本编写
在企业环境中,监控员工电脑行为是确保信息安全和员工生产力的重要一环。电脑行为监控软件允许管理员跟踪用户活动并制定警告规则,以便在出现异常情况时立即采取措施。本文将介绍如何使用Lua脚本编写自定义警告规则,以监控关键行为并自动将监控到的数据提交到网站。
209 1
2.17 新手必看的Linux服务器管理和维护注意事项
本节介绍有关服务器管理和维护过程中的一些注意事项,都是笔者的经验之谈,相信对新手会有一定的启发和帮助。 很多初学者接触Linux 时间不长,还未完整地学习一遍 Linux,理解本节内容可能有些困难,可以先跳过本节,阅读完整套教程后再回过头来阅读。
1200 0
2.17 新手必看的Linux服务器管理和维护注意事项
Groovy脚本技巧:在员工网络监控软件中应用脚本语言的代码演示
在当今数字时代,企业越来越关注员工的网络活动,以确保信息安全和工作效率。为了实现这一目标,许多公司使用了先进的员工网络监控软件。本文将介绍如何利用Groovy脚本语言,通过一些巧妙的技巧,更好地应用于员工网络监控软件,以实现定制化的监控和数据处理。
267 0
【C++】使用VS2022开发可以在线远程编译部署的C++程序
c++类库源码以及其他有关资源。站点是英文的,英文不好的话可以谷歌浏览器在线翻译。http://www.cplusplus.com/
861 0
【C++】使用VS2022开发可以在线远程编译部署的C++程序
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等