欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python實(shí)現(xiàn)簡(jiǎn)單的文件傳輸與MySQL備份的腳本分享

 更新時(shí)間:2016年01月03日 16:29:53   作者:leonisliu  
這篇文章主要介紹了Python實(shí)現(xiàn)簡(jiǎn)單的文件傳輸與MySQL備份的腳本分享,用到了socket與tarfile模塊,需要的朋友可以參考下

用python實(shí)現(xiàn)簡(jiǎn)單Server/Client文件傳輸:

服務(wù)器端:

#!/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()

由于擔(dān)心服務(wù)器數(shù)據(jù)安全,所以寫了這個(gè)腳本,結(jié)合上面分享的Server/Client 文件互傳,可以備份網(wǎng)站數(shù)據(jù)到本地,安全又可靠

#!/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 壓縮 以當(dāng)日日期命名
filename = bakdir + time.strftime('%Y%m%d')+'.tar.gz'
tar = tarfile.open(filename,"w:gz")
tar.add(source)
tar.close()

相關(guān)文章

  • Python模擬伯努利試驗(yàn)和二項(xiàng)分布代碼實(shí)例

    Python模擬伯努利試驗(yàn)和二項(xiàng)分布代碼實(shí)例

    這篇文章主要介紹了Python模擬伯努利試驗(yàn)和二項(xiàng)分布代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-05-05
  • Python如何執(zhí)行系統(tǒng)命令

    Python如何執(zhí)行系統(tǒng)命令

    這篇文章主要介紹了Python如何執(zhí)行系統(tǒng)命令,幫助大家更好的利用python操作系統(tǒng),感興趣的朋友可以了解下
    2020-09-09
  • python爬蟲模擬瀏覽器的兩種方法實(shí)例分析

    python爬蟲模擬瀏覽器的兩種方法實(shí)例分析

    這篇文章主要介紹了python爬蟲模擬瀏覽器的兩種方法,結(jié)合實(shí)例形式分析了Python爬蟲模擬瀏覽器的兩種常見操作技巧與使用注意事項(xiàng),需要的朋友可以參考下
    2019-12-12
  • Python中的__repr__()方法小結(jié)

    Python中的__repr__()方法小結(jié)

    在 Python 中,__repr__()?是一個(gè)特殊方法,用于定義對(duì)象的字符串表示形式,本文主要介紹了Python中的__repr__()方法小結(jié),具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-01-01
  • Python如何給你的程序做性能測(cè)試

    Python如何給你的程序做性能測(cè)試

    這篇文章主要介紹了Python如何給你的程序做性能測(cè)試,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07
  • Python中的列表及其操作方法

    Python中的列表及其操作方法

    這篇文章主要介紹了Python中的列表及其操作方法,涉及到的方法包括對(duì)列表元素進(jìn)行修改、添加、刪除、排序以及求列表長(zhǎng)度等,此外還介紹了列表的遍歷、數(shù)值列表、切片和元組的一些操作,下文詳細(xì)介紹需要的小伙伴可以參考一下
    2022-03-03
  • selenium+headless chrome爬蟲的實(shí)現(xiàn)示例

    selenium+headless chrome爬蟲的實(shí)現(xiàn)示例

    這篇文章主要介紹了selenium+headless chrome爬蟲的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • PyCharm 解決找不到新打開項(xiàng)目的窗口問題

    PyCharm 解決找不到新打開項(xiàng)目的窗口問題

    這篇文章主要介紹了PyCharm 解決找不到新打開項(xiàng)目的窗口問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧
    2021-01-01
  • Python 尋找局部最高點(diǎn)的實(shí)現(xiàn)

    Python 尋找局部最高點(diǎn)的實(shí)現(xiàn)

    今天小編就為大家分享一篇Python 尋找局部最高點(diǎn)的實(shí)現(xiàn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧
    2019-12-12
  • Python實(shí)現(xiàn)學(xué)生管理系統(tǒng)的代碼(JSON模塊)

    Python實(shí)現(xiàn)學(xué)生管理系統(tǒng)的代碼(JSON模塊)

    這篇文章主要介紹了Python實(shí)現(xiàn)學(xué)生管理系統(tǒng)的代碼(JSON模塊),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-04-04

最新評(píng)論