【发布时间】:2021-02-13 06:59:12
【问题描述】:
我正在尝试将文本文件从 Linux 设备上传到我的 FTP 服务器。在 Linux 中使用实际的 FTP 程序可以正常工作,但我希望能够从 python 脚本上传,以便我可以运行其他功能。
import ftplib
import os
error = False
try:
ftp = ftplib.FTP('192.168.8.10')
ftp.login('rig021', 'Ex021')
file = open('offlineCache.txt', "rb")
transfer = ftp.storbinary('STOR offlineResults.txt', file)
file.close()
ftp.close()
except ftplib.all_errors as e:
print(e)
error = True
我能够成功登录,但代码一直保持不变,直到服务器控制台中出现“[rig021] 被动数据通道超时。”
通过阅读在线和其他线程,人们说这是防火墙问题。我已经禁用了防火墙,但我怀疑这对我来说是个问题,因为我能够使用 linux 上常见的实际 FTP 上传文件。
如果有人有任何想法或能够指出我正确的方向,我将不胜感激。干杯
这是 Python FTP 客户端的日志:
UN70HS07M01000532 admin@Rig08Ex:/mnt/sdcard$ python ftpClient.py
*cmd* 'USER rig021'
*put* 'USER rig021\r\n'
*get* '331 Username ok, send password.\r\n'
*resp* '331 Username ok, send password.'
*cmd* 'PASS *****'
*put* 'PASS *****\r\n'
*get* '230 Login successful.\r\n'
*resp* '230 Login successful.'
*cmd* 'TYPE I'
*put* 'TYPE I\r\n'
*get* '200 Type set to: Binary.\r\n'
*resp* '200 Type set to: Binary.'
*cmd* 'PASV'
*put* 'PASV\r\n'
*get* '227 Entering passive mode (192,168,8,10,200,196).\r\n'
*resp* '227 Entering passive mode (192,168,8,10,200,196).'
这是来自 linux 上的标准 FTP 客户端:
Verbose mode on.
ftp> put offlineCache.txt
local: offlineCache.txt remote: offlineCache.txt
200 Active data connection established.
125 Data connection already open. Transfer starting.
226 Transfer complete.
2614136 bytes sent in 0.255 secs (1e+04 Kbytes/sec)
【问题讨论】: