Как поставить пароль с "\ n" внутри в любом соединении с python ftp? - PullRequest
0 голосов
/ 18 апреля 2019

У меня есть интересная проблема - мне нужно подключиться к серверу FTP / SFTP с кодом Python3, но пароль содержит символ \n внутри.Когда я вставляю пароль в клиент FTP / SFTP, он работает.Но если я использую pysftp или ftplib, аутентификация не пройдена.Конечно, я могу использовать pexpect для эмуляции всех вещей в среде bash, но, может быть, есть способ сделать это в более питоническом стиле?

Я использую Ubuntu 18.10, ftp v. 0.17-34, pysftp 0.2.9 или paramiko 2.4.2.

Это то, что я пытаюсь сделать

import paramiko

transport = paramiko.Transport('servername', 22)

password = "why\ninside"
username = anyuser

transport.connect(username=username, password=password)

Это то, что я получаю

---------------------------------------------------------------------------
AuthenticationException                   Traceback (most recent call last)
<ipython-input-7-2bf86c34be75> in <module>()
----> 1 transport.connect(username=username, password=password)

/home/vasily/.local/lib/python3.6/site-packages/paramiko/transport.py in connect(self, hostkey, username, password, pkey, gss_host, gss_auth, gss_kex, gss_deleg_creds, gss_trust_dns)                                                                  
   1261             else:
   1262                 self._log(DEBUG, "Attempting password auth...")
-> 1263                 self.auth_password(username, password)
   1264 
   1265         return

/home/vasily/.local/lib/python3.6/site-packages/paramiko/transport.py in auth_password(self, username, password, event, fallback)                                                                                                                       
   1434             return []
   1435         try:
-> 1436             return self.auth_handler.wait_for_response(my_event)
   1437         except BadAuthenticationType as e:
   1438             # if password auth isn't allowed, but keyboard-interactive *is*,

/home/vasily/.local/lib/python3.6/site-packages/paramiko/auth_handler.py in wait_for_response(self, event)
    248             if issubclass(e.__class__, PartialAuthentication):
    249                 return e.allowed_types
--> 250             raise e
    251         return []
    252 

AuthenticationException: Authentication failed.

Но если я использую pexpectи отправьте этот пароль в FTP или SFTP, он идет.

1 Ответ

0 голосов
/ 18 апреля 2019

Используйте это;

password = r"why\ninside"
...