ฉันจะรันคำสั่ง FTP ในหนึ่งบรรทัดได้อย่างไร


18

นี่คือสิ่งที่ฉันทำเมื่อลงชื่อเข้าใช้ FTP:

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

ฉันต้องการใช้คำสั่ง FTP แบบบรรทัดเดียว ...

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

หรือ

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

สิ่งที่คล้ายกัน ... เป็นส่วนหนึ่งของสคริปต์ที่ฉันพยายามสร้าง ไม่มีการถ่ายโอนอะไรฉันเพียงแค่ต้องก้องคำแนะนำและนี่คือวิธีที่ง่ายที่สุดที่ฉันพบว่าทำระหว่างสองระบบของฉัน


1
เดี๋ยวก่อน FTP ไม่ได้เป็นอย่างนั้น! FTP ย่อมาจาก File Transfer Protocol คุณต้องการ SSH
nickguletskii

เมื่อคุณต้องการขับเล็บและสิ่งที่คุณมีก็คือที่รองรีด ... คุณทำในสิ่งที่คุณมี ฉันกำลังลอง Telnet แต่ FTP ใช้งานได้ การควบคุมระบบที่สองอย่าง จำกัด และสิ่งที่ไม่ ... FTP echo ทำงานแม้ว่าจะเป็น "โต๊ะรีดผ้า"
WernerCD

มันไม่ได้ผลสำหรับฉัน ...nick@AccessDenied:~$ ftp ftp> echo "hi" ?Invalid command ftp>
nickguletskii

1
ftpไม่มีechoคำสั่ง lftpไม่ แต่มันเป็นท้องถิ่นอย่างหมดจดดังนั้นผมจึงไม่เห็นเหตุผลที่คุณต้องการที่จะทำด้วยตัวเอง ....
poolie

@nickguletskii ใช่ ... ฉันพยายามหาคำตอบในสิ่งที่ฉันทำผิดไป (บางทีฉันอาจจะชัดเจนกว่านี้) ชาร์ลส์มีคำตอบที่เหมาะกับฉัน (นอกเหนือจากโซลูชัน cli-php ที่ฉันใช้อยู่)
WernerCD

คำตอบ:


20

ที่จริงมีมากขึ้นของการทำงานสำหรับ SSH (เหมือนคนอื่น ๆ ได้ชี้ให้เห็น) แต่ถ้าคุณกำลังมุ่งมั่นที่จะใช้ FTP, ลองlftp สามารถใช้ได้อย่างอิสระสำหรับ Ubuntu ทุกรุ่นที่รองรับในปัจจุบัน คุณสามารถติดตั้งได้ด้วยคำสั่ง sudo apt install lftp

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

lftp เอกสาร-cสวิตช์ที่เรียกใช้คำสั่งแล้วออกจาก แต่ดูเหมือนว่าจะเสียในการกระจายส่วนใหญ่ จะช่วยให้คุณเชื่อมต่อจนกว่าคุณจะออก-equit


1
Eeeeew ... รหัสผ่านข้อความธรรมดา ...
nickguletskii

-cทำงานได้ดีสำหรับฉันบน Ubuntu
poolie

2
คุณไม่จำเป็นต้องใส่รหัสผ่านในบรรทัดคำสั่ง: หนึ่งในตัวเลือกที่ดีที่จะนำมาใส่ในและตรวจสอบให้แน่ใจว่าโหมด~/.netrc 0600FTP สามารถต่อรองรหัสผ่านที่ไม่ใช่ข้อความธรรมดาได้
poolie

ได้ผลจริง! น่ากลัว ใช่ ... มันไม่ใช่ทางออก "ดี" แต่ตัวเลือกของฉันถูก จำกัด ในเครื่องที่สองดังนั้น FTP ในขณะที่น่าเกลียดใช้งานได้
WernerCD

19

ฉันพบกระทู้นี้เมื่อฉันกำลังค้นหาวิธีที่จะมีคำสั่ง ftp เดียวดำเนินการถ่ายโอนไฟล์จากเครื่องนี้ไปยังเซิร์ฟเวอร์ ftp นี่คือวิธี:

สร้างไฟล์ด้วยคำสั่ง ftp ในนั้น: (เรียกมันว่า 'ftpcommands.txt')

 open YourFtpServer.com
 user YourUserName YourPassword
 put localfilename remotefilename
 bye

จากนั้นรันคำสั่ง ftp และป้อนไฟล์ลงในไฟล์:

 ftp -n < ftpcommands.txt

ตัวเลือก -n ป้องกันไม่ให้ ftp พยายามเข้าสู่ระบบโดยอัตโนมัติเมื่อได้รับคำสั่ง 'เปิด' ของคุณ

หวังว่าจะช่วยใครซักคน ฉันไม่พบสิ่งใดทางออนไลน์ที่เป็นวิธีแก้ปัญหานี้ดังนั้นฉันจึงต้องคิดออกเอง


หมายเหตุ: หากการถ่ายโอนไฟล์ของคุณล้มเหลวด้วยการตอบสนอง "200" ให้ลองเพิ่มคำสั่ง "passive" ทันทีก่อนที่การถ่ายโอนไฟล์จะเข้าสู่โหมดพาสซีฟ
Nick Zinger

2

คุณไม่สามารถใช้ FTP สำหรับการดำเนินการคำสั่งจากระยะไกล มันหมายถึง File Transfer Protocol สิ่งที่คุณต้องการจริงๆคือ SSH

สิ่งที่คุณต้องทำคือติดตั้งแพคเกจsshบนทั้งสองเครื่องจากนั้นทำตามคำแนะนำนี้เพื่อตั้งค่าการเข้าสู่ระบบโดยไม่ต้องใช้รหัสผ่าน

และตอนนี้วิธีการโทร:

ssh username@host echo "Hello World\!"

ตัวอย่างเช่นนี้ฉันกำลังทำเพื่อตัวเอง:

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

ระบบที่สองไม่มี SSH ฉันได้รับบางสิ่งบางอย่างที่ทำงานใน PHP ผ่าน FTP_RAW แต่ฉันจะดูว่าฉันไม่สามารถทำงานนี้ในบางจุด
WernerCD

1

การตอบสนอง @charlesbridge คำตอบรวมอยู่ในไฟล์ ~ / .bashrc ของคุณดังนี้:

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

ส่งไฟล์:

source ~/.bashrc

ตอนนี้ใช้นามแฝง "yoursite" เพื่อเข้าสู่ระบบและรันคำสั่งได้มากเท่าที่คุณต้องการ


0

ติดตั้ง busybox โดยใช้:

apt-get install busybox

busybox สามารถทำงานบน Linux หรือระบบฝังทั้งคู่จากนั้นใช้ ftpget และ ftpput

busybox ftpput -u USER -p PASSWD URL_FTPSERVER FILE_U_WANT

busybox ftpget -u USER -p PASSWD URL_FTPSERVER FILE_U_WANT
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.