Ubuntuの世界では、alwaysFTPサーバーを実行するか、またはneverします。おそらく、Ubuntuを使用してCisco、Checkpoint、またはNokiaのイメージをフラッシュする必要がある最初のネットワークアナリストです。おそらく5分間、FTPサーバーが必要です。
必要最低限のユーザー起動FTPサーバーを探しています。 Sudoで実行する必要があることを理解しています。それは結構です-しかし、私は通常のプログラムのようにそれを開始/停止したいです。
Windowsプラットフォームでは、このようなツールは1ダースほどです-私は3CDaemonを長年使用しており、最近CoreFTPを見つけました。両方とも優れています。ユーザーを設定し、ディレクトリを指定して、「開始」ボタンを押します。数分後、通常は完了し、「停止」ボタンを押します。仕事完了。
このようなツールはUbuntuには存在しないようです。 Google Codeプロジェクト が見つかりましたが、これはTFTPインスタンスを合理的にうまく作成します(まだ実行されていると仮定します-約1年使用しておらず、pythonは先に進みました) FTPはどうですか?そこに何か?
pyftpdlib を使用すると、FTPサーバーを1つ2つ3つ簡単に実行できます。
pip install --user pyftpdlib
でインストールpython -m pyftpdlib
で実行し、書き込みアクセスも必要な場合は-w
を追加します。これで、匿名でホームディレクトリを共有するためにログインできる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は常に正常に動作するはずです。
コマンドラインのように、安全でない設定の使用については警告しません。つまりパスワードなどを設定しません。
編集: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 <<<
...
Sshサーバーがある場合は、scpを使用できます。
ルーターとの間でファイルをコピーする場合は、次のツールを試してください。 tftpgui
それは私のために働いたし、構成するのは非常に簡単です。 Pythonスクリプトでもありますが、ftpではなくtftpを実行します。 python-tkをインストールしてスクリプトをダウンロードするだけです
注意すべき唯一のことは、UbunutuのデフォルトがPhython2であるため、スクリプトを開始する最良の方法は次のとおりであるということです。
Sudo python3 ./tftpgui.py
その後、GUIで構成できます。完了したら、exitを押すだけです。
ボー