FTPサーバーを一時的に実行するにはどうすればよいですか?


48

Ubuntuの世界では、FTPサーバーを常に実行している、または実行していないようです。おそらく、Ubuntuを使用してCisco、Checkpoint、またはNokiaのイメージをフラッシュする必要のある最初のネットワークアナリストです。おそらく5分間FTPサーバーが必要です。

必要最低限​​のユーザー起動FTPサーバーを探しています。おそらくsudoで実行する必要があることを理解しています。それは結構です-しかし、私は通常のプログラムのようにそれを開始/停止したいです。

Windowsプラットフォームでは、このようなツールは1ダースです-私は長年3CDaemonを使用しており、最近CoreFTPを見つけました。両方とも優れています。ユーザーを設定し、ディレクトリを指定して、「開始」ボタンを押します。数分後、通常は完了し、「停止」ボタンを押します。仕事完了。

このようなツールはUbuntuには存在しないようです。TFTPインスタンスを適度にうまく作成するGoogle Codeプロジェクトを見つけました(まだ実行されていると仮定します-約1年使用しておらず、Pythonは移行しました)が、FTPはどうですか?そこに何か?


2
残念なことに、JetFTPを終了する時間がありませんでした。それはありません正確にあなたが記述するもの、そしてそれは(あなたはもちろんの> 1024ポートを使用する必要があります)root権限なしで実行することができます。設定なしですぐに実行でき、GUIも優れています。それがどのようなものかを知るには、デザインとインターフェースが似ているJetHTTPを調べてください。
ネイサンオスマン

ジョージに感謝します、私もそれをチェックします。おそらく、両方の長所を組み合わせることができます。私とpythonの初期の頃は、だから私はそこに大いに役立つとは思わない!
スケイン

回答:


52

pyftpdlibを使用してFTPサーバーを1つ2つ3つ簡単に取得できます。

  1. pipでインストールする pip install --user pyftpdlib
  2. で実行しpython -m pyftpdlib-w書き込みアクセスも必要な場合は追加します。
  3. ステップ3はありません:)

これでFTPサーバーができました。これを使用して、ホームディレクトリを匿名で共有するためにログインできます。これはモジュールのテストとしての意味ですが、ブリキに書かれていることを実行します。

このコマンド:

python -m pyftpdlib --directory=FTP --port=2121 --write

root権限なしでポート2121で機能し、匿名ユーザーに書き込みアクセスを許可します。またFTP、ホームの代わりに現在の作業ディレクトリのディレクトリを使用します。入力python ftpserver.py --helpして、すべてのオプションに関する情報を取得します。

  • にログインします anonymous@localhost:2121/

代替テキスト

このソフトウェアはMIT Licenseの条件に基づいてリリースされることに注意してください。つまり、基本的には何でも好きなことを実行できます。ライセンスのテキストを読んでください。ほんの数行で、あなたの権利を知っています。


現在、このスクリプトは、スタンドアロン機能の一部としてユーザー名とパスワードをサポートしていません(セキュリティ上の理由から)。

だから私はその機能を追加しました:

これで、私が言及したすべてのオプションに加えて、コマンドラインパラメーターがあります。

--username=USERNAMEおよび--password=PASSWORD

python ftpserver.py --port=2121 --username=ftpuser --password=3r2u389r2u333j

繰り返しますが、--helpすべてを見るために使用します。

これはできるだけ簡単にする必要があります。


私はそれのために少しguiも書いています:

代替テキスト

  • ここからダウンロードします(rev 6で更新)

    申し訳ありませんが、3999行の長さですが、オリジナルのすべてを実行します。そして、すべてを1つのファイルに保存したかったのです。パラメーターなしで実行すると(つまり、実行可能にしてダブルクリックするか、ランチャーを作成する)、サーバーを構成するための小さなGUIが起動します。Pythonモジュールとしてインポートするか、上記のコマンドラインfuを使用できます。

    既知の問題点:

    • ポート2121以外は何も気にしません。これは単純なはずです。ポートを構成可能にするには、ユーザーに迷惑をかけたくない複雑なエラー処理が必要です。2121は常に正常に動作するはずです。

    • コマンドラインのように、安全でない設定の使用について警告することはありません。つまり、パスワードなどを設定していません。


EDIT:のAPI以来pyftpdlibftpserver.py変更(とUbuntuのペーストビンリンクはなくなっています)。上記の投稿のほとんどはもう機能しません。の(2014)バージョンではpyftpdlib、このスクリプト(ftpserver-cli.py)を使用して上記と同じことを実現します。

#!/usr/bin/env python
# ftpserver-cli.py
import sys
sys.path.append("/path/to/pyftpdlib-svn") # enter your proper path here
import argparse

from pyftpdlib.authorizers import DummyAuthorizer
from pyftpdlib.handlers import FTPHandler
from pyftpdlib.servers import FTPServer

def processCmdLineOptions():
  global optparser
  optparser = argparse.ArgumentParser(description="ftpserver-cli",
              formatter_class=argparse.RawDescriptionHelpFormatter)
  optparser.add_argument('-u', '--username', action='store', type=str,
      default="user", help="username")
  optparser.add_argument('-p', '--password', action='store', type=str,
      default="12345", help="password")
  optparser.add_argument('-t', '--port', action='store', type=int,
      default="21", help="port")
  optparser.add_argument('-d', '--directory', action='store', type=str,
      default="/home/stefano/Projekte/", help="port")
  optargs = optparser.parse_args(sys.argv[1:]) #(sys.argv)
  return optargs


optargs = processCmdLineOptions()

print("Using: user: %s pass: %s port: %d dir: %s" % (optargs.username, optargs.password, optargs.port, optargs.directory))

authorizer = DummyAuthorizer()
authorizer.add_user(optargs.username, optargs.password, optargs.directory, perm="elradfmw")
#authorizer.add_anonymous("/home/nobody")

handler = FTPHandler
handler.authorizer = authorizer

server = FTPServer(("127.0.0.1", optargs.port), handler)
server.serve_forever()

で呼び出す:

$ sudo python ftpserver-cli.py --directory=/tmp/srvtest
Using: user: user pass: 12345 port: 21 dir: /tmp/srvtest
[I 14-03-02 21:40:57] >>> starting FTP server on 127.0.0.1:21, pid=19286 <<<
...

これは素晴らしいモジュールのように見えます-私はPythonを学ぼうとしているので、これはGUIを構築するための素晴らしい出発点のように聞こえます...私はこれを答えとしてマークしていないのではないかと思います(私はすでにGUIベースのツールを誰かが知っていることを期待して)しかし、これについては頭を上げてくれて、修正版をありがとう。
スケイン

おかげで:-)あきらめず、今はGUIをプログラミングします。:P
ステファノパラッツォ

1
ステファノに感謝します!私はそれを期待していなかった!これは素晴らしいです-試してみるためのGUI(今夜)だけでなく、そもそもそれをどのようにノックしたかについての少しの指導ガイドも。どうもありがとう!
スケイン

5
paste.ubuntu.com/542726paste.ubuntu.com/542852は、残念ながら死んでいます...また、ftpserver.pyが変更され、明らかに上記の投稿はもう保持されていません(最後のスタンドアロンリビジョンはr1116のようです、これでdiff)。新しいスクリプトを使用して投稿を編集しました(ピアレビューまで非表示になります)
sdaau 14年

1
上記のスクリプトを使用するには、「pyftpdlib」ライブラリをインストールして実行する必要があります...「sudo apt-get install python-pip」、次に「pip install pyftpdlib」...すべて設定しました!
-D.Snap

1
  • pure-ftpdを使用できます pure-ftpdをインストールする

  • sshサーバーがある場合はscpを使用できます。


3
初心者は5分でPure-FTPdサーバーをインストールできます。パッケージをインストールするのと同じくらい簡単で、「pure-ftpd&」と入力するだけで…すべてです。すでに実行中のサーバーがあり、クライアントは接続を開始できます。
hhlp

1
うん、Pureは簡単です。特にpure-admin guiパッケージでは簡単です-永続的なFTPサーバーに使用します。ただし、PureFTPでは、常にFTPを実行しています。これは、WIFI経由で接続するラップトップではセキュリティ上のリスクです。ファイアウォールをオンにして、ファイアウォールが消費する(おそらく小さな)リソースを心配することを覚えておく必要はありません。一部のデバイスは良くなっていますが、scpは通常オプションではないのではないかと心配しています。最近のCiscoのCall Managerと同様に、最新のF5イメージはscpを使用していると思います。
スケイン

2
パッケージのインストール後にPureFTPデーモンを起動する必要はないと思います。(postinstパッケージ内のスクリプトによって開始されるはずだと思った。)
ネイサンオスマン

0

ルーターとの間でファイルをコピーする場合は、次のツールを試してください:tftpgui

それは私のために働いて、設定するのがとても簡単です。Pythonスクリプトでもありますが、ftpではなくtftpを実行します。python-tkをインストールしてスクリプトをダウンロードするだけです

注意すべき唯一のことは、UbunutuのデフォルトがPhython2であるため、スクリプトを開始する最良の方法は次のとおりであるということです。

sudo python3 ./tftpgui.py

その後、GUIで構成できます。完了したら、exitを押すだけです。

ボー


2
おかげでボー-私はすでにその便利なツールを私の質問で言及しました。しかし、私はFTP用のTFTPguiのようなものが欲しかった。これはStefanoがpython guiを使い果たすまで存在しなかった。
スケイン

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.