आप एक FTP सर्वर को pyftpdlib का उपयोग करके एक दो तीन के रूप में आसान हो सकते हैं :
- पाइप के साथ स्थापित करें
pip install --user pyftpdlib
- के साथ चलाएं
python -m pyftpdlib
, -w
यदि आप लिखना चाहते हैं तो प्रवेश भी जोड़ें।
- कोई तीन कदम नहीं है :)
अब आपके पास एक ftp सर्वर है जिसे आप अपने होम डायरेक्टरी को गुमनाम रूप से साझा करने के लिए लॉग इन कर सकते हैं। यह मॉड्यूल के परीक्षण के रूप में अधिक माना जाता है, लेकिन यह वही करता है जो यह टिन पर कहता है।
यह आदेश:
python -m pyftpdlib --directory=FTP --port=2121 --write
बिना रूट विशेषाधिकारों के, पोर्ट 2121 पर सेवा प्रदान करेगा और गुमनाम उपयोगकर्ताओं के लिए अनुदान लिखेगा। यह FTP
आपके घर के बजाय वर्तमान कामकाजी निर्देशिका में निर्देशिका का उपयोग करेगा । python ftpserver.py --help
सभी विकल्पों के बारे में जानकारी प्राप्त करने के लिए टाइप करें।
- इस पर लॉग इन करें
anonymous@localhost:2121/
कृपया ध्यान दें कि यह सॉफ्टवेयर एमआईटी लाइसेंस की शर्तों के तहत जारी किया गया है , जिसका अर्थ है कि आप मूल रूप से कभी भी आप इसके साथ कृपया कर सकते हैं। लाइसेंस पाठ पढ़ें, यह केवल कुछ पंक्तियाँ हैं, और अपने अधिकारों को जानें।
अब, यह स्क्रिप्ट उपयोगकर्ता नाम और पासवर्ड का समर्थन नहीं करती है क्योंकि यह स्टैंड-अलोन कार्यक्षमता (सुरक्षा कारणों से मैं कल्पना करता हूं) के भाग के रूप में है।
इसलिए मैंने वह सुविधा जोड़ी है:
अब आपके पास मेरे द्वारा बताए गए सभी विकल्पों के अलावा, कमांड लाइन पैरामीटर हैं
--username=USERNAME
और --password=PASSWORD
:
python ftpserver.py --port=2121 --username=ftpuser --password=3r2u389r2u333j
फिर से, --help
उन सभी को देखने के लिए उपयोग करें।
यह जितना आसान हो जाए उतना आसान होना चाहिए।
मैंने इसके लिए एक छोटी सी गिनी भी लिखी है:
इसे यहां डाउनलोड करें (संशोधित 6 पर अद्यतन)
मुझे खेद है कि यह 3999 पंक्तियों का है, लेकिन यह सब कुछ करेगा जो मूल करता है। और मैं यह सब एक फाइल में रखना चाहता था। जब यह बिना किसी पैरामीटर के शुरू किया जाता है (यानी इसे निष्पादन योग्य बनाते हैं और इसे डबल क्लिक करते हैं, या इसके लिए एक लांचर बनाते हैं ), तो यह आपके सर्वर को कॉन्फ़िगर करने के लिए आपके लिए थोड़ा सा गिनी शुरू करता है। आप अभी भी इसे अजगर मॉड्यूल के रूप में आयात कर सकते हैं या उपरोक्त कमांड लाइन फू का उपयोग कर सकते हैं।
ज्ञात पहलु:
मैंने पोर्ट 2121 के अलावा किसी भी चीज़ से परेशान नहीं किया है। यह सरल होना चाहिए, पोर्ट को कॉन्फ़िगर करने योग्य बनाने के लिए जटिल त्रुटि से निपटने की आवश्यकता होती है जो मैं नहीं चाहता कि उपयोगकर्ता परेशान हो। 2121 को हमेशा ठीक काम करना चाहिए।
यह आपको असुरक्षित चेतावनी के उपयोग के बारे में कमांड लाइन की तरह, चेतावनी नहीं देगा। यानी पासवर्ड या ऐसा कुछ सेट नहीं करना।
संपादित करें: के बाद से एपीआई pyftpdlib
और ftpserver.py
बदल (और 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 <<<
...