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实现换行符转换的脚本的教程
Apr 16 Python
Ubuntu安装Jupyter Notebook教程
Oct 18 Python
django模板语法学习之include示例详解
Dec 17 Python
python生成ppt的方法
Jun 07 Python
Python基于sklearn库的分类算法简单应用示例
Jul 09 Python
Numpy截取指定范围内的数据方法
Nov 14 Python
详解python中的Turtle函数库
Nov 19 Python
深入浅析Python中的迭代器
Jun 04 Python
使用matplotlib的pyplot模块绘图的实现示例
Jul 12 Python
Python3爬虫里关于识别微博宫格验证码的知识点详解
Jul 30 Python
Python 实现定积分与二重定积分的操作
May 26 Python
Python实现位图分割的效果
Nov 20 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
全国FM电台频率大全 - 3 河北省
2020/03/11 无线电
PHILIPS D1835/D1875的电路分析与打理
2021/03/02 无线电
PHP中去除换行解决办法小结(PHP_EOL)
2011/11/27 PHP
php开发文档 会员收费1期
2012/08/14 PHP
PHP制作登录异常ip检测功能的实例代码
2016/11/16 PHP
微信公众号开发之获取位置信息php代码
2018/06/13 PHP
详解php中curl返回false的解决办法
2019/03/18 PHP
使用SMB共享来绕过php远程文件包含的限制执行RFI的利用
2019/05/31 PHP
JQuery 学习笔记 选择器之三
2009/07/23 Javascript
jQuery的实现原理的模拟代码 -3 事件处理
2010/08/03 Javascript
jQuery客户端分页实例代码
2013/11/18 Javascript
jQuery动画效果animate和scrollTop结合使用实例
2014/04/02 Javascript
JavaScript设计模式之外观模式介绍
2014/12/28 Javascript
jquery专业的导航菜单特效代码分享
2015/08/29 Javascript
使用纯JS代码判断字符串中有多少汉字的实现方法(超简单实用)
2016/11/12 Javascript
浅谈Angular2 ng-content 指令在组件中嵌入内容
2017/08/18 Javascript
深入理解Vuex 模块化(module)
2017/09/26 Javascript
微信小程序基于picker实现级联菜单
2019/02/15 Javascript
微信小程序实现用table显示数据库反馈的多条数据功能示例
2019/05/07 Javascript
详解vue 在移动端体验上的优化解决方案
2019/05/20 Javascript
js实现计算器功能
2020/08/10 Javascript
prettier自动格式化去换行的实现代码
2020/08/25 Javascript
JavaScript 闭包的使用场景
2020/09/17 Javascript
js实现简易点击切换显示或隐藏
2020/11/29 Javascript
关于Python中浮点数精度处理的技巧总结
2017/08/10 Python
windows下搭建python scrapy爬虫框架步骤
2018/12/23 Python
python实现kmp算法的实例代码
2019/04/03 Python
Python与C/C++的相互调用案例
2021/03/04 Python
Belvilla德国:在线预订度假屋
2018/04/10 全球购物
工程力学专业毕业生求职信
2013/10/06 职场文书
美发活动策划书
2014/01/14 职场文书
2014审计局领导班子民主生活会对照检查材料思想汇报
2014/09/20 职场文书
校园学雷锋广播稿
2014/10/08 职场文书
幼儿园小班个人总结
2015/02/12 职场文书
终止解除劳动合同证明书
2015/06/17 职场文书
大学生入党自传2015
2015/06/26 职场文书