Как временно запустить FTP-сервер?

43

В мире Ubuntu кажется, что вы либо always запускаете FTP-сервер, либо never . Возможно, я - первый сетевой аналитик, которому необходимо прокрутить изображение Cisco, Checkpoint или Nokia с помощью Ubuntu ... Мне нужен FTP-сервер, возможно, 5 минут, не более того.

Я ищу сервер с голой костью, инициированный пользователями. Я понимаю, что это, скорее всего, будет работать с sudo. Это нормально - но я хочу начать / остановить его, как обычную программу.

На платформе Windows такие инструменты - десяток десятков - я использовал 3CDaemon уже много лет и недавно нашел CoreFTP. Оба отличные. Вы настраиваете пользователя, указываете его в каталоге, а затем нажимаете кнопку «Пуск». Через пару минут вы, как правило, закончите, и вы нажмете кнопку «Стоп». Выполнение задания.

Такие инструменты, похоже, не существуют на Ubuntu. Я нашел проект Google Code , который создает экземпляр TFTP достаточно хорошо (если он все еще работает, я не использовал его примерно через год и перешел на python), но как насчет FTP? Что-нибудь там?

    
задан Scaine 12.12.2010 в 16:05
источник

3 ответа

43

Вы можете получить FTP-сервер так же просто, как один два три, используя pyftpdlib :

  1. Установить с помощью pip pip install --user pyftpdlib
  2. Запустите с python -m pyftpdlib , добавьте -w , если вы тоже хотите писать.
  3. нет третьего шага:)

Теперь у вас есть ftp-сервер, с помощью которого вы можете анонимно делиться домашним каталогом. Это подразумевается скорее как тест модуля, но он делает то, что он говорит о жесте.

Эта команда:

python -m pyftpdlib --directory=FTP --port=2121 --write

будет обслуживать, без привилегий root, на порту 2121 и предоставить доступ для анонимных пользователей. Он также будет использовать каталог FTP в текущем рабочем каталоге вместо вашего дома. Введите python ftpserver.py --help , чтобы получить информацию обо всех параметрах.

Обратите внимание, что это программное обеспечение выпущено в соответствии с условиями лицензии MIT , что означает, что вы можете делайте в основном то, что вам нравится. Прочтите текст лицензии, это всего лишь несколько строк, и вы знаете свои права.

Теперь этот скрипт не поддерживает имя пользователя и пароль как часть его автономной функциональности (по соображениям безопасности, я думаю).

Итак, я добавил эту функцию:

  • загрузить мою измененную версию

Теперь у вас есть, помимо всех параметров, о которых я упоминал, параметры командной строки

--username=USERNAME и --password=PASSWORD :

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

Снова используйте --help , чтобы увидеть их все.

Это должно быть так же просто, как и получается.

Я также написал немного gui для этого:

  • Загрузите его здесь (обновлено в версии 6)

    Мне жаль, что это 3999 строк, но он сделает все, что делает оригинал. И я хотел сохранить все в одном файле. Когда он запускается без каких-либо параметров (т. Е. Делает его исполняемым и дважды щелкает его, или создайте для него пусковую установку ), он немного запустит для вас настройку вашего сервера. Вы все равно можете импортировать его как модуль python или использовать приведенную выше командную строку fu.

    Известные проблемы:

    • Я не беспокоился ни о чем другом, кроме порта 2121. Это должно быть простым, поэтому для конфигурирования порта требуется сложная обработка ошибок, с которой я не хочу, чтобы пользователь беспокоился. 2121 должен всегда работать нормально.

    • Он не будет предупреждать вас, как и в командной строке, об использовании небезопасной конфигурации. То есть не устанавливая пароль или что-то в этом роде.

EDIT: с тех пор, как API pyftpdlib и ftpserver.py изменился (и ссылки на wabuntu 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 <<<
...
    
ответ дан Stefano Palazzo 12.12.2010 в 17:13
источник
1
  • Вы можете использовать чистый-ftpd

  • Вы можете использовать scp , если у вас есть ssh-сервер.

ответ дан karthick87 12.12.2010 в 16:18
0

Для тех, кто копирует файлы на маршрутизаторы и из них, вы можете попробовать этот инструмент: tftpgui

Это сработало для меня и очень легко настроить. Это также скрипт Python, но tftp вместо ftp. Все, что вам нужно сделать, это установить python-tk и загрузить скрипт

Единственное, что нужно знать, это то, что Ubunutu по умолчанию использует Phython2, поэтому лучший способ запустить скрипт:

sudo python3 ./tftpgui.py

Затем вы можете настроить его в графическом интерфейсе. когда вы закончите, вы нажмете exit, и это все.

Бо     

ответ дан BO VESTERGAARD 19.12.2012 в 15:33