পাইথনে এক লাইন এফটিপি সার্ভার


108

সাধারণ এফটিপি সার্ভার করার জন্য পাইথনটিতে একটি লাইনের কমান্ড পাওয়া সম্ভব? আমি এফটিপি সার্ভার ইনস্টল না করে একটি লিনাক্স বাক্সে ফাইল স্থানান্তর করার দ্রুত এবং অস্থায়ী উপায় হিসাবে এটি করতে সক্ষম হতে চাই। পাইথন লাইব্রেরিতে অন্তর্নির্মিতভাবে ব্যবহার করার উপায় সম্ভবত ইনস্টল করার জন্য অতিরিক্ত কিছু নেই।


8
আপনি pftftpdlib এর মতো বাহ্যিক অজগর গ্রন্থাগার ব্যবহার না করলে আমি সন্দেহ করি যে আপনি কোডের একটি লাইন দিয়ে এটি করতে পারেন। পাইথনের একটি বিল্ট ইন এফটিপি ক্লায়েন্ট রয়েছে তবে সার্ভার নেই।
GWW

4
লিনাক্সে ফাইল স্থানান্তর ??? আপনি শুধু scp ব্যবহার করবেন না কেন?
লিওনম্যাক্স

Sshfs ব্যবহার করবেন না কেন ? দ্রুততম স্থানান্তর হারের জন্য (একটি ল্যানে) বিকল্প বিকল্পটি ব্যবহার করুন -o Ciphers=arcfour, sshfs $REMOTEHOST:$DIRECTORY $MOUNTPOINT -o Ciphers=arcfourএবং অনুলিপি করুন, স্থানান্তর করুন, নাম পরিবর্তন করুন, আপনার ফাইল সিস্টেমে আপনার ফাইলগুলি পরিচালনা করুন। sshfs ম্যাক ওএসএক্স-এর জন্য উপলব্ধ।
এরিক

উত্তর:


138

বাধ্যতামূলক পাকানো উদাহরণ:

twistd -n ftp

এবং সম্ভবত দরকারী:

twistd ftp --help

Usage: twistd [options] ftp [options].
WARNING: This FTP server is probably INSECURE do not use it.
Options:
  -p, --port=           set the port number [default: 2121]
  -r, --root=           define the root of the ftp-site. [default:
                    /usr/local/ftp]
  --userAnonymous=  Name of the anonymous user. [default: anonymous]
  --password-file=  username:password-style credentials database
  --version         
  --help            Display this help and exit.

4
খুব সুন্দর! কিন্তু ওপি স্ট্যান্ডার্ড পাইথন লাইব্রেরিটি ব্যবহার করতে বলেছিল কারণ তিনি অন্যান্য লাইব্রেরি ইনস্টল করতে চান না।
অ্যান্ড্রিয়া স্পাডাকিনি

22
ঠিক আছে, আমি ডাউন-ভোটিংয়ের যোগ্য, তবে সত্যই, লোকেদের টুইস্টেডটি জানা উচিত know এবং অবশ্যই ট্যুইস্টেড অনেকগুলি লিনাক্সের বেস ইনস্টলে রয়েছে।
আলী আফশার

4
আমি ভোটটি নিইনি কারণ এটি একটি দুর্দান্ত উত্তর, যদি কিছুটা O হয় এবং ভবিষ্যতের লোকেরা যখন তারা অনুরূপ সমস্যার জন্য অনুসন্ধান করে তখন এটি দরকারী বলে মনে হয়।
আন্দ্রে স্পাডাকিনি

4
@ মিশেলএ অবশ্যই উইন্ডোতে কাজ করবে। PS এটি আমার নিজের ভবিষ্যতের সাথে অদ্ভুত।
আলী আফশার

4
বেশিরভাগ প্ল্যাটফর্মগুলিতে মোচড়িত ইনস্টল করা এত সহজ pip install -U twistedযা লিঙ্কযুক্ত সাইটে সরাসরি উল্লেখ করা হয়নি।
স্টিভ বার্নস

96

পরীক্ষা করে দেখুন pyftpdlib Giampaolo Rodola থেকে। পাইথনের জন্য এটি সেখানে খুব সেরা একটি এফটিপি সার্ভার। এটি গুগলের ক্রোমিয়াম (তাদের ব্রাউজার) এবং বাজারে (একটি সংস্করণ নিয়ন্ত্রণ ব্যবস্থা) ব্যবহৃত হয়। এটি আরএফসি -959 (ওরফে: এফটিপি সার্ভার বাস্তবায়ন অনুমান) এর জন্য পাইথনের সর্বাধিক সম্পূর্ণ বাস্তবায়ন ।

কমান্ডলাইন থেকে:

python -m pyftpdlib

বিকল্পভাবে 'my_server.py':

#!/usr/bin/env python

from pyftpdlib import servers
from pyftpdlib.handlers import FTPHandler
address = ("0.0.0.0", 21)  # listen on every IP on my machine on port 21
server = servers.FTPServer(address, FTPHandler)
server.serve_forever()

আপনি আরও জটিল কিছু চাইলে ওয়েবসাইটে আরও উদাহরণ রয়েছে।

কমান্ড লাইন বিকল্পগুলির একটি তালিকা পেতে:

python -m pyftpdlib --help

দ্রষ্টব্য, আপনি যদি কোনও স্ট্যান্ডার্ড এফটিপি পোর্ট ওভাররাইড করতে বা ব্যবহার করতে চান তবে আপনার অ্যাডমিন সুবিধাগুলি প্রয়োজন (যেমন সুডো)।


4
1.3.0 হিসাবে >>> from pyftpdlib import ftpserver::pyftpdlib\ftpserver.py:54: DeprecationWarning: pyftpdlib.ftpserver module is deprecated
ড্যানিয়েল রেইস

4
বর্তমান সংস্করণে 27 শে আগস্ট, 2014 আপডেট হয়েছে। এখনই হ্রাস করার সতর্কতা থাকা উচিত নয়।
ব্রায়ান ব্রুগম্যান

এটা কি নিরাপদ?
আমিরহসিন ২

@ টেকজেএস পাইফটপিডলিব টিটিএস (আরএফসি ৪২১17) ওপরে ftp সমর্থন করে।
ব্রায়ান ব্রুজম্যান

@ ব্রায়ান ব্রুজম্যান নিরাপদে নয় মানে আমি ইন্টারনেটের মাধ্যমে এফটিপিপি উন্মোচিত করা, অনিচ্ছাকৃত কিছু না করা এবং আমার ডেটা চুরি না করা, উত্স কোডটি কি পরিবেশের পরিবেশে ব্যবহার করার জন্য যথেষ্ট নিরাপদ?
আমিরহসিন

39

আপনি পরিবর্তে এক-লাইন HTTP সার্ভার ব্যবহার করবেন না কেন ?

python -m SimpleHTTPServer 8000

8000 পোর্টে HTTP- র মাধ্যমে বর্তমান কার্যনির্বাহী ডিরেক্টরিগুলির বিষয়বস্তু সরবরাহ করবে।

আপনি যদি পাইথন 3 ব্যবহার করেন তবে আপনার পরিবর্তে এটি লেখা উচিত

python3 -m http.server 8000

দেখুন SimpleHTTPServer 2.x জন্য মডিউল দস্তাবেজ এবং http.server 3.x. এর জন্য দস্তাবেজ

যাইহোক, উভয় ক্ষেত্রেই পোর্ট প্যারামিটার alচ্ছিক।


33
আমি মনে করি না এটি তাকে ফাইল আপলোড করার অনুমতি দেয়।
রোমান প্লিল

4
কোনও পুনঃসূচনা, একক সংযোগ ইত্যাদি নেই
বাগম্যানট 123

@ রোমানপ্লিল এটি কেবল অন্য প্রান্তের এক্সডি তে ঠিক যেমন সার্ভার চালাবে
রিশিন

4
প্রশ্নটি এইচটিটিপি নয়, একটি এফটিপি সার্ভার স্থাপনের বিষয়ে।
ডেভিড জাবলোনস্কি

27

উপরের উত্তরগুলি সমস্তই ধরে নিয়েছিল যে আপনার পাইথন বিতরণে "ওয়ান লাইনার পাইথন এফটিপিডি" লক্ষ্য অর্জনের জন্য কিছু তৃতীয় পক্ষের লাইব্রেরি থাকবে, তবে এটি @ জিওও কী জিজ্ঞাসা করছে তা নয়। এছাড়াও, সিম্পলএইচটিটিপিএস সার্ভারে ফাইলগুলি ডাউনলোডের জন্য ওয়েব ব্রোসওয়ার জড়িত রয়েছে, এটি যথেষ্ট দ্রুত নয়।

পাইথন নিজে ftpd ব্যবহার করতে পারবেন না, কিন্তু আপনি ব্যবহার করতে পারেন netcat , nc:

ncমূলত কোনও ইউনিক্স-এর মতো সিস্টেমের (এমনকি এম্বেড থাকা সিস্টেমগুলি) একটি অন্তর্নির্মিত সরঞ্জাম, তাই এটি " ফাইল স্থানান্তর করার দ্রুত এবং অস্থায়ী উপায় " এর জন্য উপযুক্ত।

পদক্ষেপ 1, রিসিভারের দিকে, চালান:

nc -l 12345 | tar -xf -

এটি তথ্যের জন্য অপেক্ষা করে 12345 পোর্টে শুনবে।

পদক্ষেপ 2, প্রেরকের দিকে:

tar -cf - ALL_FILES_YOU_WANT_TO_SEND ... | nc $RECEIVER_IP 12345

এছাড়াও আপনি লাগাতে পারেন pvমাঝখানে হস্তান্তর অগ্রগতি নিরীক্ষণ করতে:

tar -cf - ALL_FILES_YOU_WANT_TO_SEND ...| pv | nc $RECEIVER_IP 12345

স্থানান্তর সমাপ্ত হওয়ার পরে, উভয় পক্ষই ncস্বয়ংক্রিয়ভাবে প্রস্থান করবে এবং কাজ শেষ হবে।


4
ধরে নেওয়ার কথা বলছি ... আপনি ধরে নিচ্ছেন যে ক্লায়েন্টগুলি ইউনিক্স মেশিনগুলি সহ tarএবং ncউপলভ্য হবে। যদি উইন্ডোজ হয়?
jlh

17

পাইফটপ্লেব ব্যবহারকারীদের জন্য। আমি পাইটপডলিব ওয়েবসাইটে এটি পেয়েছি। এটি আপনার ফাইল সিস্টেমে লেখার অ্যাক্সেস সহ বেনামে এফটিপি তৈরি করে তাই যথাযথ যত্ন সহ ব্যবহার করুন। আরও সুরক্ষার জন্য হুডের অধীনে আরও বৈশিষ্ট্য উপলব্ধ রয়েছে তাই কেবল দেখুন:

sudo pip3 install pyftpdlib

python3 -m pyftpdlib -w  

## updated for python3 Feb14:2020

যারা উপরের অবজ্ঞাত পদ্ধতিটি ব্যবহার করার চেষ্টা করেছেন তাদের জন্য সহায়ক হতে পারে।

sudo পাইথন-মি পাইফটপিডিআইবি.ফুটসার্ভার


4
আপনি sudoকোনও ভেন্টে ইনস্টল করলে আপনি এড়িয়ে যেতে পারেন
বালকি

4
ভুলে যাবেন না যে ভি 3 ভেরিয়েন্ট রয়েছে: pip3 install pyftpdlibএবং python3 -m pyftpdlib -w। আমার জন্য একটি কবজ মত কাজ।
রন ক্লেইন

4

সহজ সমাধানটি ব্যবহারকারীর পাইফটিপিডি লাইব্রেরির কাছে হবে। এই লাইব্রেরিটি আপনাকে এক লাইনে পাইথন এফটিপি সার্ভার স্পিন করতে দেয়। এটি যদিও ডিফল্টরূপে ইনস্টল করা হয় না, তবে আমরা সাধারণ অ্যাপটি কমান্ড ব্যবহার করে এটি ইনস্টল করতে পারি

apt-get install python-pyftpdlib

এখন আপনি যে ডিরেক্টরিটি পরিবেশন করতে চান তা কেবল পাইথোড মডিউলটি চালান

python -m pyftpdlib -p 21 

দেখতে দেখতে দুর্দান্ত, তবে কী ধরণের প্রমাণীকরণ ঘটে? আমি "530 প্রমাণীকরণ ব্যর্থ হয়েছে।"
guettli

3

ইনস্টল করুন:

pip install twisted

তারপরে কোড:

from twisted.protocols.ftp import FTPFactory, FTPRealm
from twisted.cred.portal import Portal
from twisted.cred.checkers import AllowAnonymousAccess, FilePasswordDB
from twisted.internet import reactor

reactor.listenTCP(21, FTPFactory(Portal(FTPRealm('./'), [AllowAnonymousAccess()])))
reactor.run()

আরও গভীরতর হন:

http://twistedmatrix.com / ডকুমেন্টস / বর্তমান / স্কোর / উদাহরণসমূহ /


2
apt-get install python3-pip

pip3 install pyftpdlib

python3 -m pyftpdlib -p 21 -w --user=username --password=password

-w = write permission

-p = desired port

--user = give your username

--password = give your password

@ কারেল তারা একই লাইব্রেরিটি কভার করে তবে এগুলি আমার কাছে সদৃশ লাগে না।
মার্ক রোটভিল

1

আমি এক-লাইন FTP সার্ভার সম্পর্কে জানি না, তবে আপনি যদি তা করেন

python -m SimpleHTTPServer

এটি 0.02.0.0800 এ একটি HTTP সার্ভার চালাবে, বর্তমান ডিরেক্টরি থেকে ফাইলগুলি সরবরাহ করবে। আপনি যদি কোনও ওয়েব ব্রাউজারের সাহায্যে একটি লিনাক্স বাক্স থেকে ফাইলগুলি দ্রুত পাওয়ার জন্য কোনও উপায় সন্ধান করে থাকেন তবে আপনি এটি মারতে পারবেন না।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.