Hi everybody,I am student and need help of any one.I am working on internship and I have to implement a SFTP client usign twisted conch module.I have program thoe code to establish th ssh tunnel using password authentication. I arrive to create directory with "MakeDirectory" method of FileTransfertClient class.But my objective is to upload and download files and the FileTransfertClient class has no method [or as I konw ] to do that.Can you help me with way to do the uploading and the downloding with twisted conch?Here is my program.<code>'''Created on 8 avr. 2015@author: hsanfo'''from sys import stdoutfrom twisted.python.log import startLogging, errfrom twisted.internet import reactorfrom twisted.internet.defer import Deferredfrom twisted.conch.ssh.common import NSimport twisted.conch.scripts.cftp.ClientOptionsfrom twisted.conch.scripts.cftp import ClientOptionsfrom twisted.conch.ssh.filetransfer import FileTransferClientfrom twisted.conch.client.connect import connectfrom twisted.conch.client.default import SSHUserAuthClient, verifyHostKeyfrom twisted.conch.ssh.connection import SSHConnectionfrom twisted.conch.ssh.channel import SSHChannelfrom twisted.conch.ssh import keys, userauthfrom twisted.internet import deferclass SFTPSession(SSHChannel):name = 'session'def channelOpen(self, whatever):d = self.conn.sendRequest(self, 'subsystem', NS('sftp'), wantReply=True)d.addCallbacks(self._cbSFTP)def _cbSFTP(self, result):client = FileTransferClient()client.makeConnection(self)self.dataReceived = client.dataReceivedself.conn._sftp.callback(client)class SFTPConnection(SSHConnection):def serviceStarted(self):self.openChannel(SFTPSession())class ClientUserAuth(userauth.SSHUserAuthClient):def getPassword(self, prompt = None):#normal password authenticationprint "PASSWORD AUTH"return defer.succeed('test') # <-- YOUR PASSWORDdef getGenericAnswers(self, name, instruction, prompts):#interactive password authenticationprint "INTERACTIVE AUTH"response = ['']*len(prompts)for i, p in enumerate(prompts):try:if('password' in p[0].lower()):response[i] = 'test' # <-- YOUR PASSWORDexcept:pass#The response is always a sequence, and the length of it is always#identical to the length of promptsreturn defer.succeed(response)def sftp(user, host, port):options = ClientOptions()options['host'] = hostoptions['port'] = portconn = SFTPConnection()conn._sftp = Deferred()auth = SSHUserAuthClient(user, options, conn)#auth = ClientUserAuth(user, options, conn)#connect(host, port, options, verifyHostKey, auth)connect(host, port, options, None, auth)return conn._sftpdef transfer(client):d = client.makeDirectory('foobarbaz', {})def cbDir(ignored):print 'Made directory'd.addCallback(cbDir)return ddef main():startLogging(stdout)user = 'test'host = '192.168.29.129'port = 22d = sftp(user, host, port)d.addCallback(transfer)d.addErrback(err, "Problem with SFTP transfer")d.addCallback(lambda ignored: reactor.stop())reactor.run()if __name__ == '__main__':main()<code>Best regardsSANFO