一個網站故障排查的、程式碼更新的簡便指令碼
故障排錯指令碼
由於近來公司的伺服器經常會出點小問題,基於各種原因要去排錯。這裡我用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
©著作權歸作者所有:來自51CTO部落格作者小羅ge11的原創作品,如需轉載,請註明出處,否則將追究法律責任
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2331/viewspace-2820283/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 三種提高Python程式碼效能的簡便方法Python
- 簡單易懂的XSS(跨站指令碼攻擊)指令碼
- GoDaddy被發現其在託管的網站的所有網頁嵌入了一個指令碼Go網站網頁指令碼
- 一個簡單的Linux啟動jar包的shell指令碼LinuxJAR指令碼
- 使用Shell指令碼程式監控網站URL是否正常指令碼網站
- 記 Arthas 實現一次 CPU 排查與程式碼熱更新
- 分享一下禁用 ESLint 的簡便方法,順便嘮叨一下程式碼規範的現狀與將來EsLint
- 故障排查工具-strace,tcpdump的簡單使用TCP
- 程式碼來構建一個簡單的compilerCompile
- 寫一個簡單的程式碼生成器
- linux出現故障字符集亂碼故障排查思路Linux
- 程式碼上線的shell指令碼指令碼
- 幾個有趣的線上python 程式碼學習網站Python學習網站
- 一個方便 LeetCode 複習的指令碼LeetCode指令碼
- 我想做一個指令碼更新一些excel表/細胞。指令碼Excel
- 手寫指令碼程式碼太累!搞一個生成工具吧指令碼
- jQuery 跨站指令碼漏洞影響大量網站jQuery指令碼網站
- 為javaweb的頁面、html新增網站圖示簡單程式碼JavaWebHTML網站
- 【Flutter】如何寫一個Flutter自動打包成iOS程式碼模組的指令碼FlutteriOS指令碼
- 200行程式碼寫一個簡易的dva行程
- 一個簡易版的T4程式碼生成
- 一個簡單的區塊鏈程式碼實現區塊鏈
- 【Ubuntu】Ubuntu常用的更新、清理命令指令碼Ubuntu指令碼
- 貼一段網站被"後門"後的程式碼網站
- 考試安排查詢指令碼(CUP)指令碼
- 一個分詞指令碼分詞指令碼
- Linux常見的網路排查指令,你知道幾個?Linux
- 向大家分享一個shell指令碼的坑指令碼
- 一個快速檢視trace的小指令碼指令碼
- 共享一個iptables的shell指令碼檔案指令碼
- MySQL密碼加密認證的簡單指令碼MySql密碼加密指令碼
- Laravel 10 行程式碼實現簡單的網站 pv uv 統計Laravel行程網站
- 跨站指令碼漏洞指令碼
- 程式碼高亮網站收集網站
- 爬取某網站寫的python程式碼網站Python
- 幾百行程式碼實現一個指令碼直譯器行程指令碼
- 為網站實現一個驗證碼網站
- 6 個方便的 Git 指令碼Git指令碼