对不起,如果这听起来太基本了,或者如果我在搜索过程中没有找到一个副本的话:
例如,这些建议没有任何帮助:
ftplib
的例子或其他教程中的例子对我来说是行不通的,这些文档更令人困惑,而不是有帮助。我一定是做了一些基本的错误,或者我的网络配置中有一些特殊的设置可能会妨碍ftplib
正常工作?我的配置。Win10上的Python3.6.3。
我的问题是:下面的代码有什么问题?
import ftplib
host = '0.0.0.0'
user = 'user'
passwd = 'XXXX'
with ftplib.FTP(host=host, user=user, passwd=passwd) as ftp:
print(ftp.dir())
过了一段时间,我得到了错误消息:
TimeoutError: WinError 10060连接尝试失败是因为连接方在一段时间后没有正确响应,或者已建立连接失败是因为连接主机没有响应
使用plink
的不同方法
但是,在命令行中,使用plink
对我来说很好。因此,主机、用户、密码或连接似乎没有任何问题。
plink -ssh -batch user@0.0.0.0 -pw XXXX "cd SubDir/SubSubDir/; ls"
但我认为,与其与plink
和subprocess
混在一起,ftplib
可能更方便。谢谢你的暗示。
发布于 2021-08-20 17:36:13
Plink是SSH客户端。SSH与FTP无关。您可能想要连接到SFTP,这是一个运行在SSH之上的完全不同的协议。
对于Python中的SFTP,使用Paramiko或pysftp。
发布于 2021-08-19 12:16:02
也许可以尝试一种不同的方法,首先确保通过ping连接到目标IP,然后尝试使用ftplib登录。举个例子,让我知道这是否是你的方向:
import ftplib
from ftplib import FTP , error_perm
import subprocess
import time
def ping_to_target (ip):
print(f"Ping ---> {ip}")
process = subprocess.Popen("ping " + ip + " -n 10 " , shell=True , stdout=subprocess.PIPE)
time.sleep(0.5)
for line in process.stdout:
if b"Destination" in line or b"Request timed out" in line or b"failure" in line:
return False
print(f"ping ---> {ip} done")
return True
def some_func(host , username , password):
if not ping_to_target(host):
return False
# CONNECT TO TARGET
ftp = FTP (host)
ftp.login(username , password)
ftp.getwelcome()
我希望这就是你问题的意思。
https://stackoverflow.com/questions/68829833
复制相似问题