我们从Python开源项目中,提取了以下5个代码示例,用于说明如何使用paramiko.SFTPServer()。
def handle(self): transport = paramiko.Transport(self.request) transport.add_server_key(pysshrp.common.config.keyData) transport.set_subsystem_handler('sftp', paramiko.SFTPServer, SFTPInterface) transport.start_server(server=self.clientthread) while transport.is_active() and pysshrp.common.running: time.sleep(1)
def init_loopback(): global sftp, tc socks = LoopSocket() sockc = LoopSocket() sockc.link(socks) tc = paramiko.Transport(sockc) ts = paramiko.Transport(socks) host_key = paramiko.RSAKey.from_private_key_file(test_path('test_rsa.key')) ts.add_server_key(host_key) event = threading.Event() server = StubServer() ts.set_subsystem_handler('sftp', paramiko.SFTPServer, StubSFTPServer) ts.start_server(event, server) tc.connect(username='slowdive', password='pygmalion') event.wait(1.0) sftp = paramiko.SFTP.from_transport(tc)
def list_folder(self, path): """Looks up folder contents of `path.`""" # Inspired by https://github.com/rspivak/sftpserver/blob/0.3/src/sftpserver/stub_sftp.py#L70 try: folder_contents = [] for f in os.listdir(path): attr = paramiko.SFTPAttributes.from_stat(os.stat(os.path.join(path, f))) attr.filename = f folder_contents.append(attr) return folder_contents except OSError as e: return SFTPServer.convert_errno(e.errno)
def __init__(self, channel, name, server, sftp_si=SFTPServerInterface, *largs, **kwargs): kwargs["sftp_si"] = SFTPServerInterface super(SFTPServer, self).__init__(channel, name, server, *largs, **kwargs)
def handle(self): transport = paramiko.Transport(self.request) rsafile = self.server.cfg.get("ssh", "private_rsa") dsafile = self.server.cfg.get("ssh", "private_dsa") rsakey = paramiko.RSAKey(filename=rsafile) dsakey = paramiko.DSSKey(filename=dsafile) transport.add_server_key(rsakey) transport.add_server_key(dsakey) transport.local_version = self.server.cfg.get("ssh", "banner") transport.set_subsystem_handler('sftp', paramiko.SFTPServer, sftpServer.sftp_server) nw = network.network(self.client_address[0], self.server.cfg.get("wetland", "docker_addr")) nw.create() sServer = sshServer.ssh_server(transport=transport, network=nw) try: transport.start_server(server=sServer) except paramiko.SSHException: return except Exception as e: print e nw.delete() sServer.docker_trans.close() return try: while True: chann = transport.accept(60) # no channel left if not transport._channels.values(): break except Exception as e: print e finally: nw.delete() sServer.docker_trans.close()