FTP sunucusunu geçici olarak nasıl çalıştırırım?


48

Ubuntu dünyasında, her zaman bir FTP sunucusu çalıştırıyorsunuz veya hiç çalıştırmıyorsunuz . Belki de Ubuntu'yu kullanarak Cisco, Checkpoint veya Nokia görüntülerini yakması gereken ilk ağ analisti benim ... 5 dakika boyunca FTP sunucusuna ihtiyacım var, bundan fazlası yok.

Çıplak kemikler, kullanıcı tarafından başlatılan bir FTP sunucusu arıyorum. Anlaşılan muhtemelen sudo ile çalışması gerekecek. Sorun değil - ama normal bir program gibi başlatmak / durdurmak istiyorum.

Windows platformunda, bu araçlar bir düzine paradır - Yıllardır 3CDaemon kullandım ve kısa süre önce CoreFTP'yi buldum. Her ikisi de mükemmel. Bir kullanıcıyı yapılandırın, dizine doğrultup "Başlat" düğmesine basın. Birkaç dakika sonra, genellikle yapılır ve "Durdur" düğmesine basarsınız. İş bitmiş.

Bu tür araçlar Ubuntu'da mevcut görünmüyor. Oldukça güzel bir şekilde bir TFTP örneği oluşturan bir Google Kodu projesi buldum (hala çalıştığını varsayarsak - yaklaşık bir yıldır kullanmadım ve python taşındı), ama FTP hakkında? Orada bir şey var mı?


2
Çok kötü JetFTP'yi bitirmek için zamanım olmadı. Tam olarak tanımladığınız şeyi yapar ve kök ayrıcalıkları olmadan çalıştırılabilir (elbette> 1024 numaralı bir bağlantı noktasını kullanmanız gerekir). Yapılandırma olmadan ve güzel bir GUI ile kutudan çıkacaktır. Neye benzeyeceği hakkında bir fikir edinmek için , tasarım ve arayüze benzeyen JetHTTP'yi inceleyin .
Nathan Osman,

Sağol George, ben de kontrol edeceğim. Belki her ikisinin de en iyileri birleştirilebilir. Benim için erken günler ve python olsa da, orada çok yardımcı olacağımdan şüpheleniyorum!
Scaine,

Yanıtlar:


52

Pyftpdlib kullanarak bir FTP sunucusunu bir iki üçe kadar kolayca çalıştırabilirsiniz :

  1. Pip ile yükleyin pip install --user pyftpdlib
  2. Yazma erişimini istiyorsanız python -m pyftpdlib, koşun , ekleyin -w.
  3. üçü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 FTPdizini, eviniz yerine geçerli çalışma dizininde kullanır. Tür python ftpserver.py --helptüm seçenekler hakkında bilgi almak için.

  • giriş yapın anonymous@localhost:2121/

alt metin

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=USERNAMEve --password=PASSWORD:

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

Yine --helphepsini görmek için kullanın .

Bu olabildiğince kolay olmalı.


Ayrıca bunun için küçük bir GUI yazdım:

alt metin

  • 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 pyftpdlibve ftpserver.pydeğ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 pyftpdlibbu 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 <<<
...

Bu mükemmel bir modül gibi gözüküyor - python öğrenmeye çalıştığım için, sanki etrafta bir GUI oluşturmak için harika bir başlangıç ​​noktası gibi görünüyor ... Korkarım ki bunu cevap olarak işaretlemiyorum. birisinin zaten GUI tabanlı bir araçtan haberi olduğunu ümit ederek, bunu oyladım Bu konuda kafaları için teşekkürler ve değiştirilmiş versiyonu için teşekkürler.
Scaine,

Teşekkürler :-) Vazgeçmeyeceğim, şimdi bunun için bir GUI programlama. : P
Stefano Palazzo

1
Teşekkürler Stefano! Bunu asla beklemiyordum! Bu harika - sadece denemek için bir GUI (bu gece) değil, aynı zamanda ilk etapta nasıl bir araya geldiğinize dair bir öğretim rehberi. Çok teşekkürler!
Scaine,

5
paste.ubuntu.com/542726 ve paste.ubuntu.com/542852 öldü, ne yazık ki ... ayrıca, ftpserver.py değişti ve görünüşe göre yukarıdaki yazı artık geçerli değil (son bağımsız revizyon r1116 gibi görünüyor , bununla birlikte fark ).
Gönderiyi yeni bir bültenle

1
orada sadece noob için, yukarıdaki betiği kullanabilmek için "pyftpdlib" kütüphanesini kurmanız, "sudo apt-get python-pip kurulumunu" ve sonra "pip install pyftpdlib" komutunu kullanmanız gerekir. hepiniz hazırsınız!
D.Nafap

1
  • Saf ftpd kullanabilirsiniz Pure-ftpd'yi kurun

  • Bir ssh sunucunuz varsa, scp kullanabilirsiniz .


3
Yeni başlayanlar bir Pure-FTPd sunucusunu 5 dakika içinde kurabilir. Paketi kurmak kadar basit, "pure-ftpd &" yazarak ve hepsi bu kadar basit olabilir. Zaten çalışan bir sunucunuz var ve istemciler bağlanmaya başlayabilir.
hhlp

1
Evet, Pure'un özellikle saf-yönetici gui paketi ile kolay olduğunu takdir ediyorum - kalıcı FTP sunucum için kullanıyorum. Ancak, PureFTP ile, WIFI ile bağlanan bir dizüstü bilgisayar için güvenlik riski olan / her zaman çalışan / çalışan FTP'siniz. Güvenlik duvarımı açtığımı ve tükettiği (muhtemelen minik) kaynaklar konusunda endişelenmeyi hatırlamak istemem. Korkarım scp genellikle bir seçenek değildir, ancak bazı cihazlar daha iyiye gidiyor - Sanırım en son F5 görüntüleri Cisco'nun Çağrı Yöneticisi'nde olduğu gibi scp kullanıyor.
Scaine,

2
Paketi kurduktan sonra PureFTP arka planını başlatmanız gerektiğini sanmıyorum. ( postinstPaketteki senaryo tarafından başlatılması gerektiğini düşündüm .)
Nathan Osman

0

Dosyaları yönlendiricilere ve yönlendiricilerden kopyalayanlar için bu aracı denemek isteyebilirsiniz: tftpgui

Benim için çalıştı ve yapılandırması çok kolaydır. Aynı zamanda bir Python betiğidir, ancak ftp yerine tftp yapar. Tek yapmanız gereken python-tk'yi yüklemek ve betiği indirmek.

Farkında olunması gereken tek şey Ubunutu'nun Phython2'ye varsayılan olduğu, dolayısıyla betiği başlatmanın en iyi yolu şudur:

sudo python3 ./tftpgui.py

Daha sonra GUI'de yapılandırabilirsiniz. İşiniz bittiğinde exit tuşuna basın ve o kadar.


2
Teşekkürler Bo - Benim sorumla bu faydalı araçtan bahsetmiştim. Ancak, Stefano onun python gui'sini alana kadar mevcut olmayan FTP için TFTPgui gibi bir şey istedim.
Scaine

yerine çalışıyor ve cihazların bir sürü (1k +) ile uğraşan eğer senaryoya çok daha kolaydır ftplib piton
LXX
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.