近期有這項稍微奇怪之需求
系統使用windows
python部分使用過
from ftplib import FTP_TLS
ftps = FTP_TLS('FTP位置')
ftps.login(user='帳號',passwd='密碼')
ftps.prot_p()
ftps.nlst()
ftps.quit()
此範例進行過修改
但於ftps.nlst()處皆會錯誤
錯誤碼為
TimeoutError: [WinError 10060] 連線嘗試失敗,因為連線對象有一段時間並未正確回應,或是連線建立失敗,因為連線的主機無法回 應。
請問cmd有內建方法可以使用tls加密連線嗎?
或者該python問題為何呢?
2020/08/04更新進展
...
ftps.prot_p()
print(ftps.getwelcome())
print(ftps.size('OOXX.xml'))
到這邊都可以正確
但如果要對檔案進行上傳或下載則依然會出現
TimeoutError: [WinError 10060] 連線嘗試失敗,因為連線對象有一段時間並未正確回應,或是連線建立失敗,因為連線的主機無法回應。
之錯誤
另外print(ftps.getwelcome())的回傳值會是220 (vsFTPd 3.0.2)
在使用你提供的程式碼時並未出現此問題OuO
使用repl.it
nlst 指令停住不動, 通常都是 Passive/Active mode 的問題; 據說 ftplib client 預設開啟 Passive mode, 請先弄清楚你要連的 FTP Server 是使用 Passive 還是 Active mode?
我不確定這是不是根因?
但是 FTP 兩邊的 mode 不匹配, 確實會發生 nlst 卡死現象...
建議參考看看ssh scp.
https://pypi.org/project/scp/
讓你參考看看!