http://www.perlmonks.org?node_id=1225898


in reply to Beginners guide to Net::FTP

I was having a major headache with Net::FTP recently on my raspberry pi. I found that this code:
use Net::FTP; $ftp = Net::FTP->new("xxx", Debug => 1) or die "Cannot connect to host: $@"; $ftp->login("xxx",'xxx') or die "Cannot login ", $ftp->message; $ftp->cwd("xxx") or die "Cannot change working directory ", $ftp->message; $ftp->put("test.txt") or die "put failed ", $ftp->message; $ftp->quit;
Didn't work and I got the error: 502 'PORT' command not implemented. I tried this on both Raspbian and Arch Arm. The same code worked fine from a windows box, however. On windows, I noticed that put behaved differently, putting the connection into PASV mode before transferring the file. On linux this didn't happen. I solved the issue by putting the entire connection into PASV mode (calling pasv() before put() didn't work):
$ftp = Net::FTP->new("xxx", Debug => 1, Passive => 1) or die "Cannot connect to host: $@";
This worked fine. Just putting this here in case someone else has the issue!

Replies are listed 'Best First'.
Re^2: Beginners guide to Net::FTP
by afoken (Chancellor) on Nov 17, 2018 at 12:54 UTC
    Didn't work and I got the error: 502 'PORT' command not implemented.

    That looks like an FTP server that insists on passive mode. That's generally a good idea.

    I solved the issue by putting the entire connection into PASV mode

    That confirms this. Generally, passive mode is the prefered way to communicate with an FTP server. http://slacksite.com/other/ftp.html explains the difference between active and passive mode quite well.

    Alexander

    --
    Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so". ;-)