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

本文涉及的产品
RDS AI 助手,专业版
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
RDS MySQL DuckDB 分析主实例,基础系列 4核8GB
简介:

故障排错脚本

由于近来公司的服务器经常会出点小问题,基于各种原因要去排错。这里我用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 '{print $4}'")
                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 '{print $5 " " $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 '{print $4}'")
                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 '{print $5 " " $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操作。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
目录
相关文章
|
Java Apache Maven
HttpClientConnectionManager哪个版本里有?
【8月更文挑战第25天】HttpClientConnectionManager哪个版本里有?
666 2
|
弹性计算 安全 网络安全
阿里云服务器租用流程,四种阿里云服务器租用方式图文教程参考
阿里云服务器可以通过自定义租用、一键租用、云市场租用和活动租用四种方式去租用,不同的租用方式适合不同的用户群体,例如我们只是想租用一款配置较低且可以快速部署应用的云服务器,通常可以选择一键租用或者云市场租用,本文为大家展示不同租用方式的适合对象以及租用流程,以供初次租用阿里云服务器的用户参考和选择。下面是阿里云服务器租用的图文操作步骤。
12292 2
|
机器学习/深度学习 人工智能 API
OpenSPG 新版发布:新增大模型知识抽取,3 步快速搭建专属知识图谱
OpenSPG 新版发布,支持大模型增强的图谱构建,仅需 3 个步骤快速搭建专属知识图谱。
OpenSPG 新版发布:新增大模型知识抽取,3 步快速搭建专属知识图谱
|
安全
LVM&RAID 特点&区别
RAID分为RAID0、RAID1、RAID5、RAID10这四种形式,都是为了解决硬盘读写速度和安全性而不断更新换代,当然不同的场景也可以用不同的形式,解决遇到的不同的问题。 LVM可以允许用户对硬盘资源进行动态调整。
718 0
LVM&RAID 特点&区别
|
28天前
|
人工智能 自然语言处理 Shell
🦞 如何在 OpenClaw (Clawdbot/Moltbot) 配置阿里云百炼 API
本教程指导用户在开源AI助手Clawdbot中集成阿里云百炼API,涵盖安装Clawdbot、获取百炼API Key、配置环境变量与模型参数、验证调用等完整流程,支持Qwen3-max thinking (Qwen3-Max-2026-01-23)/Qwen - Plus等主流模型,助力本地化智能自动化。
37872 151
🦞 如何在 OpenClaw (Clawdbot/Moltbot) 配置阿里云百炼 API
|
10天前
|
人工智能 自然语言处理 监控
OpenClaw skills重构量化交易逻辑:部署+AI全自动炒股指南(2026终极版)
2026年,AI Agent领域最震撼的突破来自OpenClaw(原Clawdbot)——这个能自主规划、执行任务的智能体,用50美元启动资金创造了48小时滚雪球至2980美元的奇迹,收益率高达5860%。其核心逻辑堪称教科书级:每10分钟扫描Polymarket近千个预测市场,借助Claude API深度推理,交叉验证NOAA天气数据、体育伤病报告、加密货币链上情绪等多维度信息,捕捉8%以上的定价偏差,再通过凯利准则将单仓位严格控制在总资金6%以内,实现低风险高频套利。
4799 39
|
6天前
|
存储 人工智能 负载均衡
阿里云OpenClaw多Agent实战宝典:从极速部署到AI团队搭建,一个人=一支高效军团
在AI自动化时代,单一Agent的“全能模式”早已无法满足复杂任务需求——记忆臃肿导致响应迟缓、上下文污染引发逻辑冲突、无关信息加载造成Token浪费,这些痛点让OpenClaw的潜力大打折扣。而多Agent架构的出现,彻底改变了这一现状:通过“单Gateway+多分身”模式,让一个Bot在不同场景下切换独立“大脑”,如同组建一支分工明确的AI团队,实现创意、写作、编码、数据分析等任务的高效协同。
1445 22
|
23天前
|
人工智能 安全 机器人
OpenClaw(原 Clawdbot)钉钉对接保姆级教程 手把手教你打造自己的 AI 助手
OpenClaw(原Clawdbot)是一款开源本地AI助手,支持钉钉、飞书等多平台接入。本教程手把手指导Linux下部署与钉钉机器人对接,涵盖环境配置、模型选择(如Qwen)、权限设置及调试,助你快速打造私有、安全、高权限的专属AI助理。(239字)
8544 24
OpenClaw(原 Clawdbot)钉钉对接保姆级教程 手把手教你打造自己的 AI 助手