Подключение к SFTP-серверу с помощью Paramiko завершается с ошибкой «Требуется целое число (есть тип str)»

#python #ssh #sftp #paramiko

#python #ssh #sftp #paramiko

Вопрос:

Я пытаюсь запустить следующий код :

 #!/data/go_dl/resources/miniconda3/envs/stg01.nifi_Env/bin/python
import sys
import paramiko
import socket

sftpHost = 'eng-test-host'
sftpPort = '22'
sftpUser = 'user_1'
sftpPass = '123456'
sftpPathSource = '/tmp/poc/'
localPath = '/data/poc/'
sftpIMGFiles = 'test.IMG'


transport=paramiko.Transport((sftpHost, sftpPort))
transport.connect(username=sftpUser, password=sftpPass)
sftp=paramiko.SFTPClient.from_transport(transport)

sftp.put(sftpPathSource   sftpIMGFiles    localPath   sftpIMGFiles)
sftp.close()
transport.close()

class FastTransport(paramiko.Transport):
    def __init__(self, sock):
        super(FastTransport, self).__init__(sock)
 

Но я получаю эту ошибку :

 Traceback (most recent call last):
  File "gettingTtsFile.py", line 18, in <module>
    transport=paramiko.Transport((sftpHost, sftpPort))
  File "/data/go_dl/resources/miniconda3/lib/python3.8/site-packages/paramiko/transport.py", line 409, in __init__
    retry_on_signal(lambda: sock.connect((hostname, port)))
  File "/data/go_dl/resources/miniconda3/lib/python3.8/site-packages/paramiko/util.py", line 283, in retry_on_signal
    return function()
  File "/data/go_dl/resources/miniconda3/lib/python3.8/site-packages/paramiko/transport.py", line 409, in <lambda>
    retry_on_signal(lambda: sock.connect((hostname, port)))
TypeError: an integer is required (got type str)
 

Кто-нибудь может мне помочь? Версия Python, которую я пытаюсь запустить, равна 3.8.5, а Paramiko — 2.7.2.

Спасибо

Ответ №1:

port Число arg в paramiko.Transport должно быть an int , а не str

 sftpHost = 'eng-test-host'
sftpPort = 22 # Note this is int and not str

transport=paramiko.Transport((sftpHost, sftpPort))
 

Комментарии:

1. omg…in мое лицо, и я не видел …, пробовал много вещей, но не это, спасибо DhakkanCoder.