मैं एक लाइन पर FTP कमांड कैसे निष्पादित कर सकता हूं?


18

जब मैं एक एफ़टीपी में प्रवेश करता हूं तो यही होता है:

ftp user:password@server
ftp: user:password@server: Unknown host
ftp> echo HELLO WORLD!
ftp> quit

मैं एक-लाइन एफ़टीपी कमांड करना चाहता हूं ...

ftp user:password@server -command "echo HELLO WORLD"

या

"echo HELLO WORLD" | ftp user:password@server 

कुछ इसी तरह ... एक स्क्रिप्ट के हिस्से के रूप में मैं बनाने की कोशिश कर रहा हूं। कुछ भी स्थानांतरित नहीं हो रहा है, मुझे बस कुछ निर्देशों को प्रतिध्वनित करने की आवश्यकता है और यह सबसे आसान तरीका है जिसे मैंने अपने दो सिस्टमों के बीच किया है।


1
रुको, एफ़टीपी उसके लिए नहीं है! एफ़टीपी फ़ाइल स्थानांतरण प्रोटोकॉल के लिए है। आपको SSH की आवश्यकता है।
निकुलेत्स्की 18

जब आपको कुछ नाखूनों को चलाने की आवश्यकता होती है और आपके पास एक इस्त्री बोर्ड होता है ... आप जो करते हैं उसके साथ करते हैं। मैं टेलनेट की कोशिश कर रहा हूं, लेकिन एफ़टीपी काम करता है। दूसरी प्रणाली का सीमित नियंत्रण और क्या नहीं ... एफ़टीपी इको एक "आयरनिंग बोर्ड" होने पर भी काम करता है।
वर्नरसीडी

खैर, यह मेरे लिए काम नहीं किया ...nick@AccessDenied:~$ ftp ftp> echo "hi" ?Invalid command ftp>
निकुलेत्सकी

1
ftpएक echoआदेश नहीं है । lftpकरता है, लेकिन यह पूरी तरह से स्थानीय है, इसलिए मैं यह नहीं देखता कि आप ऐसा क्यों करना चाहते हैं ....
पूली

@nickguletskii हाँ ... मैं जो गलत कर रहा था उसका जवाब पाने की कोशिश कर रहा था (शायद मैं अधिक स्पष्ट हो सकता था)। चार्ल्स का जवाब है कि मेरे लिए काम करता है (एसएल पर मिला क्ली-पीएचपी समाधान के अलावा)।
वर्नरसीडी

जवाबों:


20

यह वास्तव में SSH के लिए एक नौकरी से अधिक है (जैसा कि दूसरों ने बताया है), लेकिन यदि आप ftp का उपयोग करने के लिए दृढ़ हैं, तो lftp आज़माएं । यह उबंटू के सभी वर्तमान में समर्थित संस्करणों के लिए स्वतंत्र रूप से उपलब्ध है। आप इसे कमांड के साथ इंस्टॉल कर सकते हैं sudo apt install lftp

lftp -u username,password -e "your command;quit" ftp.site.com

lftp दस्तावेज़ एक -cस्विच को चलाता है जो कमांड चलाता है और फिर क्विट करता है, लेकिन यह अधिकांश वितरण में टूटा हुआ प्रतीत होता है। -eजब तक आप जारी नहीं करेंगे तब तक आपको कनेक्टेड रखेगा quit


1
Eeeew ... सादा पाठ पासवर्ड ...
nicguletskii

-cउबंटू पर मेरे लिए ठीक काम करता है।
पूली

2
आपको पासवर्ड को कमांड लाइन पर रखने की आवश्यकता नहीं है: एक अच्छा विकल्प यह है कि इसे अंदर रखें ~/.netrcऔर सुनिश्चित करें कि यह मोड है 0600। एफ़टीपी तार पर गैर-सादे-टेक्स्ट पासवर्ड पर बातचीत कर सकता है।
पूली

यह काम करता है! बहुत बढ़िया। हां ... यह एक "अच्छा" समाधान नहीं है, लेकिन मेरे विकल्प दूसरी मशीन तक सीमित हैं इसलिए एफ़टीपी, बदसूरत काम करता है।
वर्नरसीडी

19

मुझे यह धागा तब मिला जब मैं इस मशीन से ftp सर्वर में एक फाइल ट्रांसफर निष्पादित करने के लिए एक रास्ता खोज रहा था। यहां कैसे:

इसमें ftp कमांड के साथ एक फाइल बनाएं: (इसे 'ftpcommands.txt' कहें)

 open YourFtpServer.com
 user YourUserName YourPassword
 put localfilename remotefilename
 bye

फिर ftp कमांड चलाएं और उसमें फाइल को फीड करें:

 ftp -n < ftpcommands.txt

जब यह आपको 'ओपन' कमांड प्राप्त करता है, तो एन-ऑप्शन स्वचालित रूप से लॉग इन करने का प्रयास करने से रोकता है।

आशा है कि किसी की मदद करता है मुझे ऑनलाइन कुछ भी नहीं मिला जो यह समाधान था, इसलिए मुझे इसे स्वयं पता लगाना था।


नोट: यदि आपका फ़ाइल स्थानांतरण "200" प्रतिक्रिया के साथ विफल हो जाता है, तो निष्क्रिय मोड में प्रवेश करने के लिए फ़ाइल स्थानांतरण से ठीक पहले कमांड "निष्क्रिय" जोड़ने का प्रयास करें।
निक जिंजर

2

आप दूरस्थ रूप से कमांड निष्पादित करने के लिए FTP का उपयोग नहीं कर सकते। यह फाइल ट्रांसफर प्रोटोकॉल के लिए है। आपको वास्तव में एसएसएच की आवश्यकता है।

आपको बस sshदोनों मशीनों पर पैकेज स्थापित करने की आवश्यकता है और फिर पासवर्ड-कम लॉगिन सेट करने के लिए इस गाइड का पालन करें

और अब इसे कैसे कॉल करें:

ssh username@host echo "Hello World\!"

उदाहरण के लिए, यह मैं खुद से कर रहा हूं:

nick@AccessDenied:~$ ssh nick@localhost echo "Hello World\!"
Hello World!

दूसरी प्रणाली में SSH नहीं है। मुझे वास्तव में FTP_RAW के माध्यम से PHP में काम करने के लिए कुछ मिला है, लेकिन मैं देखूंगा कि क्या मुझे कुछ बिंदु पर यह काम नहीं मिल सकता है।
वर्नरसीडी

1

@Charlesbridge उत्तर को लागू करते हुए, अपने ~ / .bashrc में निम्नलिखित को शामिल करें:

alias yoursite="lftp -u <username> -e \"<commandA;commandB>\" yoursite.com"

फ़ाइल स्रोत:

source ~/.bashrc

अब लॉगऑन करने के लिए उपनाम "योराइट" का उपयोग करें और जितनी चाहें उतनी कमांड निष्पादित करें।


0

उपयोग करके बिजीबॉक्स स्थापित करें:

apt-get install busybox

व्यस्तबॉक्स लिनक्स या एंबेडेड सिस्टम दोनों पर काम कर सकता है, फिर ftpget और ftpput का उपयोग कर सकते हैं

busybox ftpput -u USER -p PASSWD URL_FTPSERVER FILE_U_WANT

busybox ftpget -u USER -p PASSWD URL_FTPSERVER FILE_U_WANT
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.