web-dev-qa-db-ja.com

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

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

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

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

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

48
Scaine

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/からログインします

alt text

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


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

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

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

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

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

繰り返しますが、--helpを使用してすべて表示します。

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


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

alt text

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

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

    既知の問題点:

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

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


編集:pyftpdlibおよびftpserver.pyのAPIが変更されたため(およびubuntu Pastebinリンクがなくなったため)。上記の投稿のほとんどはもう機能しません。 (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 <<<
...
51
Stefano Palazzo
  • pure-ftpdInstall pure-ftpd

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

1
karthick87

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

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

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

Sudo python3 ./tftpgui.py

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

ボー

0
BO VESTERGAARD