Сервер sftp Paramiko определяет клиента и отображает в папку - PullRequest
0 голосов
/ 26 декабря 2018

Я использую paramiko для создания собственного sftp сервера.Пока что я использую аутентификацию RSA и могу подключиться к моему серверу с клиента, используя файл key.Но теперь я хочу определить, какой клиент подключается, и сопоставить их с конкретными папками.Вот мой server.py Я пытался создать папку в handle_client(), но безуспешно.Как я могу достичь этого?Пожалуйста, помогите мне

class Server(paramiko.ServerInterface):
    def __init__(self):
        self.event = threading.Event()

    def check_channel_request(self, kind, chanid):
        if kind == 'session':
            return paramiko.OPEN_SUCCEEDED
        return paramiko.OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED

    def check_auth_publickey(self, username, key):
        if (username == 'zorig') and (key == paramiko.RSAKey(filename='open.key')):
            return paramiko.AUTH_SUCCESSFUL
        return paramiko.AUTH_FAILED


def handle_client(client_socket):
    while True:
        request = client_socket.recv(1024)
        if re.search(b'(exit)', request):
            # client_socket.close()
            client_socket.sendall(b'exiting')
            break
        elif len(request) > 0:
            print('[*] Received: ', request)
            o_put = subprocess.check_output(request.decode(), shell=True)
            client_socket.sendall(o_put)
...