Facing this issue with Python2.7 and Ftplib ? I won’t waste your time talking shit! Let’s fix it.
Create a new class inheriting Ftplib’s FTP_TLS class.
import ftplib class FTP_TLS_UNROUTABLE_HOST(ftplib.FTP_TLS, object): def makepasv(self): _, port = super(FTP_TLS_UNROUTABLE_HOST, self).makepasv() return self.host, port
Now, use this new class to create a new session.
session = FTP_TLS_UNROUTABLE_HOST('host','username','password')
Now ? Do whatever you want with your session :) It won’t cry for The requested address is not valid in its context.
Why is this happening ?
This issue persists because ftplib is unable to make a connction with the server in passive mode because of an unroutable address. To fix this, we’re forcing it to use the provided hostname regardless of whatever address is returned.
It works for these cases as well.
500 Illegal PORT command. The requested address is not valid in its context.