python - 使用 Paramiko 连接到 SFTP 服务器失败并显示“需要整数(获取类型 str)”
问题描述
我正在尝试运行以下代码:
#!/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。
谢谢
解决方案
中的port
数字 argparamiko.Transport
必须是 anint
而不是str
sftpHost = 'eng-test-host'
sftpPort = 22 # Note this is int and not str
transport=paramiko.Transport((sftpHost, sftpPort))
推荐阅读
- c# - 覆盖 Automapper 以映射所有属性具有相似名称的两个对象
- java - replaceAll 或正则表达式 java 正斜杠
- angular - CordovaError:找不到“JAVA_HOME”环境变量
- animation - Flutter 屏幕右下角的按钮
- dart - 无法加载内核二进制文件 (Dart SDK dev.69.4)
- excel-formula - 2张excel公式帮助
- android - 为什么在尝试注入 Conext 时会出现此错误?
- arrays - Excel公式搜索多个字符串之一并返回字符串
- javascript - 将键和值映射到 Javascript 中的新键
- javascript - 获取所有选中的复选框 javascript 或 jquery