Python实现简单的文件传输与MySQL备份的脚本分享


Posted in Python onJanuary 03, 2016

用python实现简单Server/Client文件传输:

服务器端:

#!/usr/bin/python
import SocketServer, time
class MyServer(SocketServer.BaseRequestHandler):
userInfo = {
'leonis' : 'leonis',
'hudeyong' : 'hudeyong',
'mudan' : 'mudan' }
def handle(self):
print 'Connected from', self.client_address
while True:
receivedData = self.request.recv(8192)
if not receivedData:
continue
elif 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:
break
while 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':
break
self.request.close()
print 'Disconnected from', self.client_address
print
if __name__ == '__main__':
print 'Server is started\nwaiting for connection…\n'
srv = SocketServer.ThreadingTCPServer(('ip', 50000), MyServer)
srv.serve_forever()

客户端:

import socket, time
class 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.response
self.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':
break
else:
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':
break
f.write(data)
f.flush()
f.close()
print 'download finished'
break
else:
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.py
import os
import time
import tarfile
 
os.chdir('/home/web/') #切换目录
source = 'leonis'
bakdir = '/home/web/leonis/'
# mysql dump
dump = '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()
Python 相关文章推荐
Python 匹配任意字符(包括换行符)的正则表达式写法
Oct 29 Python
python检测lvs real server状态
Jan 22 Python
在Python的Django框架中实现Hacker News的一些功能
Apr 17 Python
Python基于matplotlib绘制栈式直方图的方法示例
Aug 09 Python
取numpy数组的某几行某几列方法
Apr 03 Python
Python实现的大数据分析操作系统日志功能示例
Feb 11 Python
Python魔法方法详解
Feb 13 Python
用Python写一个模拟qq聊天小程序的代码实例
Mar 06 Python
python 中如何获取列表的索引
Jul 02 Python
python路径的写法及目录的获取方式
Dec 26 Python
python实现扫雷游戏
Mar 03 Python
python Tkinter模块使用方法详解
Apr 07 Python
简单介绍Python中的几种数据类型
Jan 02 #Python
简单实现python爬虫功能
Dec 31 #Python
python实现颜色空间转换程序(Tkinter)
Dec 31 #Python
基于python的Tkinter实现一个简易计算器
Dec 31 #Python
python实现爬虫统计学校BBS男女比例之数据处理(三)
Dec 31 #Python
python实现爬虫统计学校BBS男女比例之多线程爬虫(二)
Dec 31 #Python
python实现爬虫统计学校BBS男女比例(一)
Dec 31 #Python
You might like
比较简单实用的PHP无限分类源码分享(思路不错)
2011/10/13 PHP
支持中文的php加密解密类代码
2011/11/27 PHP
微信公众平台开发实现2048游戏的方法
2015/04/15 PHP
合格的PHP程序员必备技能
2015/11/13 PHP
PHP使用PhpSpreadsheet操作Excel实例详解
2020/03/26 PHP
学习jquery之一
2007/04/27 Javascript
jquery 表单下所有元素的隐藏
2009/07/25 Javascript
使用jQuery内容过滤选择器选择元素实例讲解
2013/04/18 Javascript
JavaScript function 的 length 属性使用介绍
2014/09/15 Javascript
js调用webservice构造SOAP进行身份验证
2016/04/27 Javascript
jQuery Mobile中的button按钮组件基础使用教程
2016/05/23 Javascript
Angular学习笔记之angular的$filter服务浅析
2016/11/12 Javascript
详解js中call与apply关键字的作用
2016/11/21 Javascript
jQuery实现页面倒计时并刷新效果
2017/03/13 Javascript
原生js实现吸顶效果
2017/03/13 Javascript
详解AngularJs HTTP响应拦截器实现登陆、权限校验
2017/04/11 Javascript
Node.js  REPL (交互式解释器)实例详解
2017/08/06 Javascript
微信小程序中post方法与get方法的封装
2017/09/26 Javascript
PostgreSQL Node.js实现函数计算方法示例
2019/02/12 Javascript
vue+elementUI实现表单和图片上传及验证功能示例
2019/05/14 Javascript
vue实现滑动切换效果(仅在手机模式下可用)
2020/06/29 Javascript
微信小程序实现倒计时功能
2020/11/19 Javascript
[00:19]CN DOTA NEVER DIE!VG夺冠rOtK接受采访
2019/12/23 DOTA
Python中endswith()函数的基本使用
2015/04/07 Python
启动targetcli时遇到错误解决办法
2017/10/26 Python
jupyter notebook引用from pyecharts.charts import Bar运行报错
2020/04/23 Python
详解Numpy中的广播原则/机制
2018/09/20 Python
使用Python封装excel操作指南
2021/01/29 Python
CSS3 倾斜的网页图片库实例教程
2009/11/14 HTML / CSS
LN-CC英国:伦敦时尚生活的缩影
2019/09/01 全球购物
在职人员函授期间自我评价分享
2013/11/08 职场文书
人事专员岗位职责
2013/11/20 职场文书
党员干部承诺书范文
2014/03/25 职场文书
2014年食堂工作总结
2014/11/20 职场文书
病假条格式范文
2015/08/17 职场文书
电力安全学习心得体会
2016/01/18 职场文书