Anda bisa membuat server FTP berjalan semudah satu dua tiga menggunakan pyftpdlib :
- Instal dengan pip
pip install --user pyftpdlib
- Jalankan dengan
python -m pyftpdlib
, tambahkan -w
jika Anda ingin akses tulis juga.
- tidak ada langkah ketiga :)
Anda sekarang memiliki server ftp yang dapat Anda masuki untuk membagikan direktori home Anda secara anonim. Ini lebih dimaksudkan sebagai tes modul, tetapi melakukan apa yang tertulis di kaleng.
Perintah ini:
python -m pyftpdlib --directory=FTP --port=2121 --write
akan melayani, tanpa hak akses root, pada port 2121 dan memberikan akses tulis kepada pengguna anonim. Ini juga akan menggunakan direktori FTP
di direktori kerja saat ini, bukan di rumah Anda. Ketik python ftpserver.py --help
untuk mendapatkan informasi tentang semua opsi.
- masuk ke sana di
anonymous@localhost:2121/
Harap dicatat bahwa perangkat lunak ini dirilis di bawah ketentuan Lisensi MIT , yang berarti pada dasarnya Anda dapat melakukan apa pun yang Anda suka dengannya. Baca teks lisensi, hanya beberapa baris, dan ketahui hak Anda.
Sekarang, skrip ini tidak mendukung nama pengguna dan kata sandi sebagai bagian dari fungsi yang berdiri sendiri (untuk alasan keamanan saya bayangkan).
Jadi saya telah menambahkan fitur itu:
Anda sekarang memiliki, di samping semua opsi yang saya sebutkan, parameter baris perintah
--username=USERNAME
dan --password=PASSWORD
:
python ftpserver.py --port=2121 --username=ftpuser --password=3r2u389r2u333j
Sekali lagi, gunakan --help
untuk melihat semuanya.
Ini harus semudah yang didapat.
Saya juga menulis sedikit gui untuk itu:
Unduh di sini (diperbarui pada rev. 6)
Maaf, ini panjangnya 3999 baris, tapi itu akan melakukan semua yang asli lakukan. Dan saya ingin menyimpan semuanya dalam satu file. Ketika dimulai tanpa parameter apa pun (mis. Membuatnya dapat dieksekusi dan klik dua kali, atau buat peluncur untuk itu ), itu mulai sedikit gui bagi Anda untuk mengkonfigurasi server Anda. Anda masih dapat mengimpornya sebagai modul python atau menggunakan fu baris perintah di atas.
Masalah Dikenal:
Saya tidak terganggu dengan apa pun selain port 2121. Ini harus sederhana, membuat port dapat dikonfigurasi membutuhkan penanganan kesalahan kompleks yang saya tidak ingin pengguna repot dengan. 2121 harus selalu berfungsi dengan baik.
Ini tidak akan memperingatkan Anda, seperti baris perintah, tentang menggunakan konfigurasi tidak aman. Yaitu tidak menetapkan kata sandi atau sesuatu seperti itu.
EDIT: sejak API pyftpdlib
dan ftpserver.py
diubah (dan tautan pastebin ubuntu hilang); sebagian besar posting di atas tidak berfungsi lagi. Untuk versi (2014) pyftpdlib
, gunakan skrip ini ( ftpserver-cli.py
) untuk mencapai yang sama seperti di atas:
#!/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()
telepon dengan:
$ 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 <<<
...