python写数据库校验_python--mysql状态检验与md5算法

#!/usr/bin/python

#coding=utf-8

import os,io

import hashlib

import string

import sys

#################################

####mysql服务启动################

#################################

def service_start():

os.system('service mysqld start')

#################################

####mysql状态检查################

#################################

def service_status():

a=os.popen('service mysqld status|cut -c 10-12').readlines()

b=os.popen('netstat -aon|grep 3306|cut -c 24-27').readlines()

#a=os.popen('ls /home').readlines()

#a=os.listdir('/home')

if(a[0].strip('\n')=='not'):

#  os.system('service mysql.server start')

print ('服务未启动')

else:

print ('服务已启动')

try:

if(b[0].strip('\n')=='3306'):

print ('3306端口正常')

else:

print ('3306端口未启动')

except Exception:

print ('3306端口未启动')

d=os.popen('service mysqld status').readlines()

print (d[0])

###########################

#####选择器################

###########################

def switch(type):

x = {'1':lambda:service_start(),

'2':lambda:service_status(),

'3':lambda:old_md5(),

'4':lambda:new_md5(),

'5':lambda:bijiao_md5()}

return x[type]()

########################################

#旧md5验证##############################

########################################

def calMd5(afile):

m = hashlib.md5()

file = io.FileIO(afile,'r')

bytes = file.read(1024)

while(bytes != b''):

m.update(bytes)

bytes = file.read(1024)

file.close()

md5value = m.hexdigest()

return  md5value

def visitor(args, directoryName,filesInDirectory):     # called for each dir

#line='%s\n' %(directoryName)

#myfile.write(line)

print "\t"*(args-1),directoryName

for fname in filesInDirectory:

fpath = os.path.join(directoryName, fname)

abc="%s\n" %fpath

myfile.write(abc)

if not os.path.isdir(fpath):

print "\t"*args,fname,"\t",calMd5(fpath)

line="%s\t%s\t\t\t%s\n" %(directoryName,fname,calMd5(fpath))

myfile.write(line)

def calDirMd5(startdir, level):

os.path.walk(startdir, visitor, level+1)

def old_md5():

backup=raw_input("请输入mysql备份路径:")

global myfile

myfile=open('/opt/old_md5','w')

calDirMd5(backup,0)

myfile.close()

##############################

#########新md5校验############

##############################

def new_md5():

newbackup=raw_input('请输入mysql备份路径:')

global myfile1

myfile1=open('/opt/new_md5','w')

new_calDirMd5(newbackup,0)

myfile1.close()

def new_visitor(args, directoryName,filesInDirectory):     # called for each dir

print "\t"*(args-1),directoryName

for fname in filesInDirectory:

fpath = os.path.join(directoryName, fname)

abc="%s\n" %fpath

myfile1.write(abc)

if not os.path.isdir(fpath):

print "\t"*args,fname,"\t",calMd5(fpath)

line="%s\t%s\t\t\t%s\n" %(directoryName,fname,calMd5(fpath))

myfile1.write(line)

def new_calDirMd5(startdir, level):

os.path.walk(startdir, new_visitor, level+1)

#############################

#####验证一致性##############

#############################

def bijiao_md5():

a=calMd5('/opt/old_md5')

b=calMd5('/opt/new_md5')

if a==b:

print "数据是一致的"

else:

print "数据是不一致的"

if __name__=='__main__':

shuru=raw_input('请输入数字(如:1,2,3,4): \n 1启动mysql \n 2查看mysql状态 \n 3旧数据一致性计算 \n 4新数据一致性计算 \n 5验证数据是否一致 \n')

switch(shuru)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值