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监控网站运行异常并发送邮件的方法
Mar 13 Python
python实现简单的socket server实例
Apr 29 Python
详细解读Python中的__init__()方法
May 02 Python
Python的Flask站点中集成xhEditor文本编辑器的教程
Jun 13 Python
LRUCache的实现原理及利用python实现的方法
Nov 21 Python
python按综合、销量排序抓取100页的淘宝商品列表信息
Feb 24 Python
python实战之实现excel读取、统计、写入的示例讲解
May 02 Python
python求最大连续子数组的和
Jul 07 Python
python 2.7.13 安装配置方法图文教程
Sep 18 Python
浅谈Python中的可迭代对象、迭代器、For循环工作机制、生成器
Mar 11 Python
Transpose 数组行列转置的限制方式
Feb 11 Python
Python实现疫情通定时自动填写功能(附代码)
May 27 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入门学习知识点二 PHP简单的分页过程与原理
2011/07/14 PHP
javascript flash下fromCharCode和charCodeAt方法使用说明
2008/01/12 Javascript
Extjs中ComboBoxTree实现的下拉框树效果(自写)
2013/05/28 Javascript
浅谈Javascript 执行顺序
2013/12/18 Javascript
原生的html元素选择器类似jquery选择器
2014/10/15 Javascript
jquery.mousewheel实现整屏翻屏效果
2015/08/30 Javascript
js实现随屏幕滚动的带缓冲效果的右下角广告代码
2015/09/04 Javascript
jQuery实现的省市联动菜单功能示例【测试可用】
2017/01/13 Javascript
js a标签点击事件
2017/03/30 Javascript
想用好React的你必须要知道的一些事情
2017/07/24 Javascript
js防刷新的倒计时代码 js倒计时代码
2017/09/06 Javascript
工作中常用到的ES6语法
2018/09/04 Javascript
Vue filter格式化时间戳时间成标准日期格式的方法
2018/09/16 Javascript
新年快乐! javascript实现超级炫酷的3D烟花特效
2019/01/30 Javascript
vue h5移动端禁止缩放代码
2019/10/28 Javascript
微信小程序实现单个卡片左滑显示按钮并防止上下滑动干扰功能
2019/12/06 Javascript
Vue+abp微信扫码登录的实现代码示例
2020/01/06 Javascript
浅析Python的web.py框架中url的设定方法
2016/07/11 Python
python3 pillow生成简单验证码图片的示例
2017/09/19 Python
python编写弹球游戏的实现代码
2018/03/12 Python
浅谈关于Python3中venv虚拟环境
2018/08/01 Python
python 不同方式读取文件速度不同的实例
2018/11/09 Python
python得到一个excel的全部sheet标签值方法
2018/12/10 Python
使用Tensorflow实现可视化中间层和卷积层
2020/01/24 Python
Anaconda配置pytorch-gpu虚拟环境的图文教程
2020/04/16 Python
keras模型保存为tensorflow的二进制模型方式
2020/05/25 Python
高考考python编程是真的吗
2020/07/20 Python
美国男装连锁零售商:Men’s Wearhouse
2016/10/14 全球购物
澳大利亚当地最大的时装生产商:Cue
2018/08/06 全球购物
公积金转移接收函
2014/01/11 职场文书
公司授权委托书范本
2014/04/03 职场文书
电焊工岗位工作职责
2014/07/09 职场文书
爱牙日活动总结
2014/08/29 职场文书
Python使用OpenCV和K-Means聚类对毕业照进行图像分割
2021/06/11 Python
Python max函数中key的用法及原理解析
2021/06/26 Python
pytest实现多进程与多线程运行超好用的插件
2022/07/15 Python