Hi, i've implemented paramiko library to rdiff-backup code. If someone is interested in I changed only two files: SetConnections.py and Main.py.
Here is some code: # SetConnections.py modifications import paramiko import new __cmd_schema = '%s' # ...... # init_connection() function # Remove .__del__ method from BufferedFile. This can broke thread # and print some nasty exceptions at the end of rdiff-backup # working. paramiko.file.BufferedFile.__del__ = new.instancemethod( lambda x: None, None, paramiko.file.BufferedFile ) full_hostname = remote_cmd port = 22 username, hostname = full_hostname.split('@') if hostname.find(':') > 0: hostname, port = hostname.split(':') trans = paramiko.Transport((hostname, int(port))) trans.connect(username=username, password='yourpassword') chan = trans.open_channel("session") command = 'rdiff-backup --server' chan.exec_command(command) stdin = chan.makefile('w') stdout = chan.makefile() conn_number = len(Globals.connections) conn = connection.PipeConnection(stdout, stdin, conn_number) Paramiko channel have makefile() function wich is simulating pipe similar to popen2(). The second modification is some cleanup code for paramiko threads: # Main.py # cleanup() function # join paramiko threads from paramiko.transport import _active_threads for tobj in _active_threads: tobj.stop_thread() tobj.join() And this is all. I've tested it on Windows and Linux and it's working fine. Paramiko is a little slower than ssh client on LInux. Now i want to make some more modifications in code (for example reading login/password from config file and GUI) so publishing paramiko connection code now is a good idea ;-) Modified files u can find here: http://pako.overflow.pl/trash/rdiff-backup/ Cheers!
_______________________________________________ rdiff-backup-users mailing list at rdiff-backup-users@nongnu.org http://lists.nongnu.org/mailman/listinfo/rdiff-backup-users Wiki URL: http://rdiff-backup.solutionsfirst.com.au/index.php/RdiffBackupWiki