国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python實現簡單的文件傳輸與MySQL備份的腳本分享

2020-01-04 17:52:37
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了Python實現簡單的文件傳輸與MySQL備份的腳本分享,用到了socket與tarfile模塊,需要的朋友可以參考下
 

用python實現簡單Server/Client文件傳輸:

服務器端:

#!/usr/bin/pythonimport SocketServer, timeclass MyServer(SocketServer.BaseRequestHandler):userInfo = {'leonis' : 'leonis','hudeyong' : 'hudeyong','mudan' : 'mudan' }def handle(self):print 'Connected from', self.client_addresswhile True:receivedData = self.request.recv(8192)if not receivedData:continueelif receivedData == 'Hi, server':self.request.sendall('hi, client')elif receivedData.startswith('name'):self.clientName = receivedData.split(':')[-1]if MyServer.userInfo.has_key(self.clientName):self.request.sendall('valid')else:self.request.sendall('invalid')elif receivedData.startswith('pwd'):self.clientPwd = receivedData.split(':')[-1]if self.clientPwd == MyServer.userInfo[self.clientName]:self.request.sendall('valid')time.sleep(5)sfile = open('down.sh', 'rb')while True:data = sfile.read(1024)if not data:breakwhile len(data) > 0:intSent = self.request.send(data)data = data[intSent:]time.sleep(3)self.request.sendall('EOF')else:self.request.sendall('invalid')elif receivedData == 'bye':breakself.request.close()print 'Disconnected from', self.client_addressprintif __name__ == '__main__':print 'Server is started/nwaiting for connection…/n'srv = SocketServer.ThreadingTCPServer(('ip', 50000), MyServer)srv.serve_forever()

客戶端:

import socket, timeclass MyClient:def __init__(self):print 'Prepare for connecting…'def connect(self):sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)sock.connect(('ip', 50000))sock.sendall('Hi, server')self.response = sock.recv(8192)print 'Server:', self.responseself.s = raw_input("Server: Do you want get the 'thinking in python' file?(y/n):")if self.s == 'y':while True:self.name = raw_input('Server: input our name:')sock.sendall('name:' + self.name.strip())self.response = sock.recv(8192)if self.response == 'valid':breakelse:print 'Server: Invalid username'while True:self.pwd = raw_input('Server: input our password:')sock.sendall('pwd:' + self.pwd.strip())self.response = sock.recv(8192)if self.response == 'valid':print 'please wait…'f = open('down.sh', 'wb')while True:data = sock.recv(1024)if data == 'EOF':breakf.write(data)f.flush()f.close()print 'download finished'breakelse:print 'Server: Invalid password'sock.sendall('bye')sock.close()print 'Disconnected'if __name__ == '__main__':client = MyClient()client.connect()

由于擔心服務器數據安全,所以寫了這個腳本,結合上面分享的Server/Client 文件互傳,可以備份網站數據到本地,安全又可靠

#!/usr/bin/python# Filename: webbak.pyimport osimport timeimport tarfile os.chdir('/home/web/') #切換目錄source = 'leonis'bakdir = '/home/web/leonis/'# mysql dumpdump = 'mysqldump'dbuser = 'XXXXXXX'dbpwd = 'XXXXXXXXXXX'dbname = 'XXXXXXXX'sqlfile = '/home/web/leonis/leonis.sql'sql = "%s -u%s -p%s %s > %s" % (dump,dbuser,dbpwd,dbname,sqlfile)if os.path.exists(sqlfile):   os.remove(sqlfile)else:  print 'then will dump sql file'result = os.popen(sql)if result:       # print ("SQL backup completed!")else: print ("SQL backup failed!")# gzip 壓縮 以當日日期命名filename = bakdir + time.strftime('%Y%m%d')+'.tar.gz'tar = tarfile.open(filename,"w:gz")tar.add(source)tar.close()

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 荔波县| 香格里拉县| 蒙城县| 大洼县| 常德市| 寿宁县| 库尔勒市| 皮山县| 禹城市| 新乡县| 白玉县| 华坪县| 页游| 临汾市| 嘉荫县| 阿城市| 宜春市| 大安市| 青川县| 万荣县| 伊宁市| 富阳市| 凤翔县| 宁安市| 即墨市| 永济市| 三河市| 玉溪市| 美姑县| 惠东县| 新泰市| 临沂市| 东丽区| 盐津县| 东宁县| 英山县| 海宁市| 屏东市| 凌云县| 武冈市| 西乡县|