FTP put工作,但FTPlib storlines/storbinary在Linux设备上不工作

2024-09-30 14:28:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试将一个文本文件从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)



Tags: import服务器txtcmdgetputmodelinux
1条回答
网友
1楼 · 发布于 2024-09-30 14:28:52

我浏览了Martin Prikryl的个人资料,在他的一篇相关文章中找到了答案。如果在ftplib中发生这种情况,请添加

ftp.set_pasv(False)

到Python客户端脚本

相关问题 更多 >