Pyftpdlib kullanarak bir FTP sunucusunu bir iki üçe kadar kolayca çalıştırabilirsiniz :
- Pip ile yükleyin
pip install --user pyftpdlib
- Yazma erişimini istiyorsanız
python -m pyftpdlib
, koşun , ekleyin -w
.
- üçüncü adım yok :)
Artık ana dizininizi isimsiz olarak paylaşmak için giriş yapabileceğiniz bir ftp sunucunuz var. Bu daha çok modülün bir testi olarak ifade edilir, ancak teneke söylediklerini yapar.
Bu komut:
python -m pyftpdlib --directory=FTP --port=2121 --write
root ayrıcalıkları olmadan, 2121 portunda hizmet verecek ve isimsiz kullanıcılara yazma erişimi sağlayacaktır. Ayrıca FTP
dizini, eviniz yerine geçerli çalışma dizininde kullanır. Tür python ftpserver.py --help
tüm seçenekler hakkında bilgi almak için.
- giriş yapın
anonymous@localhost:2121/
Lütfen bu yazılımın MIT Lisansı koşulları altında yayınlandığını unutmayın; bu , temelde ne istersen yapabileceğin anlamına gelir. Lisans metnini okuyun, sadece birkaç satır ve haklarınızı öğrenin.
Şimdi, bu komut dosyası tek başına işlevselliğinin bir parçası olarak kullanıcı adını ve şifreyi desteklemiyor (güvenlik nedeniyle).
Bu yüzden ben bu özelliği ekledim:
Şimdi, bahsettiğim tüm seçeneklere ek olarak komut satırı parametrelerine sahipsin.
--username=USERNAME
ve --password=PASSWORD
:
python ftpserver.py --port=2121 --username=ftpuser --password=3r2u389r2u333j
Yine --help
hepsini görmek için kullanın .
Bu olabildiğince kolay olmalı.
Ayrıca bunun için küçük bir GUI yazdım:
Buradan indirin (rev. 6'da güncellenmiştir)
Özür dilerim 3999 satır uzunluğunda, ancak orijinalin yaptığı her şeyi yapacak. Ve hepsini bir dosyada tutmak istedim. Herhangi bir parametre olmadan başlatıldığında (yani çalıştırılabilir hale getirin ve çift tıklayın ya da bunun için başlatıcısı oluşturun ), sunucunuzu yapılandırmanız için küçük bir gui başlar. Hala bir python modülü olarak içe aktarabilir veya yukarıdaki komut satırını fu kullanabilirsiniz.
Bilinen Sorunlar:
Bağlantı noktası 2121'den başka bir şeyle uğraşmadım. Bu basit olmalı, bağlantı noktasını yapılandırılabilir hale getirmek, kullanıcının uğraşmasını istemediğim karmaşık hata yönetimi gerektirir. 2121 daima iyi çalışmalı.
Komut satırı gibi, güvensiz bir yapılandırma kullanmanız konusunda sizi uyarmaz. Bir şifre veya bunun gibi bir şey ayarlamıyorum.
DÜZENLEME: API beri pyftpdlib
ve ftpserver.py
değiştirilen (ve ubuntu pastebin bağlantılar gitti); Yukarıdaki yayınların çoğu artık çalışmıyor. Yukarıdaki (2014) sürümde, yukarıdakiyle aynı elde etmek için pyftpdlib
bu betiği ( ftpserver-cli.py
) kullanın:
#!/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()
ile ara:
$ 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 <<<
...