我知道那里也有类似的问题,但我对这个具体例子感到不安,没有找到一个很好的答案。 I m 试图为达尔建立远程后备服务器, 。 I ve 问:,通过援引分处理的净目录来说明这一点。 开放,但我更喜欢编织袖珍,并尽可能与花.合。 将会移交几个格人,因此,我只能看一看所有投入,然后通过。
问题是,服务器似乎没有阅读数据。
此时此刻,我宣读以下法典:
from socket import socket, AF_INET, SOCK_STREAM
import sys
import SocketServer
import subprocess
class DarHandler(SocketServer.BaseRequestHandler):
def handle(self):
print( entering handler )
data = self.request.recv(1024).strip()
print( got: + data)
if data == xform :
s = socket(AF_INET, SOCK_STREAM)
s.bind(( ,0))
myaddr, myport = s.getsockname()
print( bound new socket to {0}:{1} .format(myaddr, myport))
self.request.send(str(myport))
s.listen(1)
conn, remoteaddr = s.accept()
print( accepted connection from {0}:{1} .format(*remoteaddr))
xform_input = conn.makefile( rb ,0)
proc = subprocess.Popen(
[ /usr/bin/dar_xform , -s , 10k , - , archives/sockbackup ,],
stdin=xform_input
)
return_code = proc.wait()
print( dar_xform returned {0} .format(return_code))
conn.close()
self.request.send(str(return_code))
else:
self.request.send( bad request )
print( send result, exiting handler )
server_address = ( localhost , 18010)
def server():
server = SocketServer.TCPServer(server_address, DarHandler)
print( listening )
server.serve_forever()
def client():
sock = socket(AF_INET, SOCK_STREAM)
print( connecting to server )
sock.connect(( localhost , 18010))
print( connected, sending request )
sock.send( xform )
print( waiting for response )
port = sock.recv(1024)
print( got: + port)
s = socket(AF_INET, SOCK_STREAM)
s.connect(( localhost , int(port)))
print( connected to dar_xform port )
dar_output = s.makefile( wb ,0)
return_code = subprocess.call(
[ /usr/bin/dar , -B , config/test.dcf , -c , - ,],
stdout=dar_output
)
print( dar returned {0} .format(return_code))
s.close()
result = sock.recv(1024)
print( received: + result)
sock.close()
print( socket closed, exiting )
if __name__ == "__main__":
if sys.argv[1].startswith( serv ):
server()
else:
client()
在我管理客户时,我从服务器方面获得以下产出:
listening entering handler got: xform bound new socket to 0.0.0.0:41658 accepted connection from 127.0.0.1:42440
然后,它就坐在那里。 同时,dar
客户和客户在等待服务器的答复:
connecting to server connected, sending request waiting for response got: 41300 connected to dar_xform port -------------------------------------------- 53 inode(s) saved with 0 hard link(s) recorded 0 inode(s) changed at the moment of the backup 0 inode(s) not saved (no inode/file change) 0 inode(s) failed to save (filesystem error) 1 inode(s) ignored (excluded by filters) 0 inode(s) recorded as deleted from reference backup -------------------------------------------- Total number of inodes considered: 54 -------------------------------------------- EA saved for 0 inode(s) -------------------------------------------- dar returned 0