2016-05-11 54 views
0

私はpython 2.7でftplibを使ってファイルをダウンロードするために(別のサーバーから)リモートFTPサーバーに接続しています。私はRETRコマンドを実行すると、それはスロー:FTP RETRコマンドで「ホストへのルートがありません」

 self.get_connection().retrbinary("RETR " + source, open(destination, 'wb').write) 
     File "/usr/lib/python2.7/ftplib.py", line 414, in retrbinary 
     conn = self.transfercmd(cmd, rest) 
     File "/usr/lib/python2.7/ftplib.py", line 376, in transfercmd 
     return self.ntransfercmd(cmd, rest)[0] 
     File "/usr/lib/python2.7/ftplib.py", line 335, in ntransfercmd 
     conn = socket.create_connection((host, port), self.timeout) 
     File "/usr/lib/python2.7/socket.py", line 575, in create_connection 
     raise err 
    socket.error: [Errno 113] No route to host 

を今私のコードは、別のサーバーに正常に動作しているが、これではそうではないようです。だから私はping x.x.x.x(それは動作します)を試しました、私はtelnet x.x.x.x 21(それは動作します)、ftp x.x.x.x(それは動作します!)を使用します。それから、私は両方のサーバ上のファイアウォールに行き、&のトラフィックを通過させて、同じエラーを受け取りました...

アイデアはありますか?編集

(私はRETRこれが第三のサーバ上で正常に動作している...そして、loginコマンドが正常に動作しているようですが、ない言ったように):これは、直接実行されるコマンドのサンプルです

FTP

enter image description here

答えて

1

...リモートFTPサーバーに接続するため

あなたの説明によると、リモートサーバーに接続するサーバーは、それはプライベートIPアドレスを使用することを示しています。私の推測では、サーバが認識しているアドレス(10.0.0.8)は、サーバに接続するためのアドレスではない、つまりサーバがルータの背後にあり、ポート転送やアドレス変換が行われているということです。

残念ながら、当事者の1人がルータの後ろにいる場合、FTPは実際には機能しません。クライアントがルータ(パッシブ)またはサーバ(アクティブ)の後ろにいるときは、パッシブモードとアクティブモードで遊んでいるかもしれません。しかし、両方がルータの後ろにある場合、あなたは通常失ってしまいます。

+0

あなたの答えはSteffenありがとうございます、残念ながらあなたは正しいです...私がしたかったことはちょうど1回問題です。 。 – Oussama

0

あなたはFTPESサーバーに接続しようとしていますか?

このお試しください:これは、あなたがよりサーバーおよび執筆からファイルを取得するために

ftps.retrbinary("RETR " + 'test.csv' ,open('test.csv', 'wb').write) 

、のようなものを使用することができます

ディレクトリに存在するファイルを一覧表示する必要があり

from ftplib import FTP_TLS 
creds = [ 
    'host', 'username', 
    'password'] 
ftps = FTP_TLS(*creds) 
ftps.prot_p() 
ftps.retrlines('LIST') 

をそれはローカルです。

FTPLIB

+0

回答ありがとうございます。いいえFTPES – Oussama

関連する問題