วิธีดาวน์โหลดไฟล์จากไซต์ FTP ในบรรทัดคำสั่งเดียวโดยไม่มีการโต้ตอบกับผู้ใช้ (Windows)


13

ฉันรู้ว่ามีคำสั่ง FTP ซึ่งสามารถเรียกใช้จากบรรทัดคำสั่งบน Windows และมันจะดาวน์โหลดไฟล์จากไซต์ FTP มีการระบุผู้ใช้ + รหัสผ่านใน "ว่า" หนึ่งบรรทัด cmd ตัวเลือก + รหัสผ่านเหล่านี้ควรอยู่ในบรรทัดคำสั่งนั้น

echo open 192.168.1.64 21> ftp.txt
echo anonymous>> ftp.txt
echo ftp@ftp.com>> ftp.txt
echo bin >> ftp.txt
echo get test.txt >> ftp.txt
echo bye >> ftp.txt

ftp -s:ftp.txt

คุณต้องการดาวน์โหลดผ่านFTPหรือคุณแค่ต้องดาวน์โหลดไฟล์เหล่านั้นด้วยโปรแกรมใด ๆ ? (Rsync สามารถอ่านได้จากไฟล์ที่มีชื่อที่จะซิงค์และจากบรรทัดคำสั่ง Scp ยังสามารถทำได้จากบรรทัดคำสั่งซึ่งทั้งสองอย่างนั้นไม่เก่าแก่เท่ากับข้อความธรรมดา no_true_security FTP)
Hennes

คำตอบ:


13

ลองสิ่งนี้: ไฟล์แบทช์ - ดาวน์โหลด FTP แบบอัตโนมัติ

WGET ftp://ftp.mydomain.com/path/file.ext  

สำหรับการดาวน์โหลดที่ไม่ระบุชื่อ

หรือ:

WGET ftp://user:password@ftp.mydomain.com/path/file.ext  

เมื่อต้องการการรับรองความถูกต้อง


ในฐานะที่เป็น @ XavierStuvw ชี้ให้เห็นผ่านการแก้ไขและความคิดเห็นการสลับWGETไปที่ตัวพิมพ์เล็กwgetจะทำงานใน linux

wget ftp://user:password@ftp.mydomain.com/path/file.ext

ฉันไม่เห็นคำสั่งใด ๆ ที่มีตัวเลือกผู้ใช้และรหัสผ่านในหนึ่งบรรทัด
soundhax

-s สวิตช์เป็นประโยคตามที่ฉันจำได้
soundhax

2
ยินดีต้อนรับสู่ Super User! ในขณะที่สิ่งนี้อาจตอบคำถามในทางทฤษฎีมันก็ควรที่จะรวมส่วนสำคัญของคำตอบที่นี่และให้ลิงค์สำหรับการอ้างอิง
ลุคชาวแคนาดา

1
@CalvT ไม่มีการคัดค้าน ประโยชน์ที่คาดว่าจะได้จากความคิดเห็นคือผู้ใช้งานลีนุกซ์สามารถลงจอดบนหน้านี้ได้หลังจากการค้นหาทางอินเทอร์เน็ตและดูแลระบบที่ใช้ มันเกิดขึ้นกับฉันในความเป็นจริง
XavierStuvw

1
@ CalvT ชื่อมีความถูกต้องแน่นอน แต่เสิร์ชเอ็นจิ้นมักจะมองเห็นกรอบคำตอบทั้งหมดและง่ายต่อการสาดเข้าไป แน่นอนว่าสิ่งนี้ไม่ควรลดความสนใจของผู้อ่าน แต่ในกรณีนี้มันเป็นเรื่องบังเอิญที่คำสั่ง Linux และ Windows นั้นเหมือนกัน ทำได้ดีมากขอบคุณ
XavierStuvw

8

ฉันพบวิธี:

echo open 192.168.0.1 >> ftp &echo user admin w00t >> ftp &echo binary >> ftp &echo get file.zip >> ftp &echo bye >> ftp &ftp -n -v -s:ftp &del ftp

สิ่งนี้ไม่ทำงานเมื่อฉันลองใช้ (ฉันลงเอยด้วยการใช้ไคลเอนต์บรรทัดคำสั่งของ WinSCP แทน ) มีการทดสอบ Windows เวอร์ชันใด
Peter Mortensen

คุณช่วยอธิบายวิธีการทำงานของสายนี้ได้อย่างไร ไม่พบเอกสารใด ๆ ฉันพยายามทำให้มันทำงานกับ psftp
stallingOne

@stallingOne ให้คิดว่า&เป็นตัวแบ่งบรรทัด ... จริงๆแล้วมันมีหลายคำสั่ง โดยทั่วไปเขาสร้างสคริปต์ทีละบรรทัดโดยใช้echoแล้วบอกftpให้เรียกใช้ เขาตั้งชื่อไฟล์สคริปต์ftpด้วยซึ่งทำให้สับสน
Havenard

ตัวเลือกชื่อไฟล์ไม่ดี "ftp" เป็นทั้งชื่อไฟล์ของสคริปต์ที่เขากำลังสร้างและชื่อของ exe ดังนั้นความละเอียดของเส้นทางที่ftp -n -v -s:ftpค่อนข้างจะประหลาด (การใช้ "ftp" แต่ละครั้งอ้างถึงสิ่งต่าง ๆ )
Chad Schouggins

2

โปรดทราบว่าคุณสามารถขอไวยากรณ์ของคำสั่งใน DOS โดยใช้ /? สวิตซ์. ตัวอย่างเช่น:

C: \> ftp /?

ถ่ายโอนไฟล์ไปยังและจากคอมพิวเตอร์ที่ใช้บริการเซิร์ฟเวอร์ FTP
(บางครั้งเรียกว่า daemon) Ftp สามารถใช้แบบโต้ตอบ

FTP [-v] [-d] [-i] [-n] [-g] [-s: filename] [-a] [-A] [-x: sendbuffer] [-r: recvbuf
fer] [-b: asyncbuffers] [-w: windowsize] [โฮสต์]

  -v ระงับการแสดงการตอบสนองของเซิร์ฟเวอร์ระยะไกล
  -n ระงับการเข้าสู่ระบบอัตโนมัติเมื่อเชื่อมต่อเริ่มต้น
  -i ปิดพรอมต์แบบโต้ตอบในระหว่างหลายไฟล์
                  การถ่ายโอน
  -d เปิดใช้งานการดีบัก
  -g ปิดใช้งานการวนชื่อไฟล์ (ดูที่คำสั่ง GLOB)
  -s: filename ระบุไฟล์ข้อความที่มีคำสั่ง FTP 
                  คำสั่งจะทำงานโดยอัตโนมัติหลังจาก FTP เริ่มทำงาน
  - ใช้อินเตอร์เฟซท้องถิ่นใด ๆ เมื่อผูกพันการเชื่อมต่อข้อมูล
  -A เข้าสู่ระบบโดยไม่ระบุชื่อ
  -x: send sockbuf แทนที่ขนาด SO_SNDBUF เริ่มต้นที่ 8192
  -r: recv sockbuf แทนที่ขนาด SO_RCVBUF เริ่มต้นที่ 8192
  -b: นับ async แทนที่นับ async เริ่มต้นจาก 3
  -w: windowsize แทนที่ขนาดบัฟเฟอร์การโอนเริ่มต้นที่ 65535
  host ระบุชื่อโฮสต์หรือที่อยู่ IP ของรีโมท
                  โฮสต์ที่จะเชื่อมต่อกับ

หมายเหตุ:
  - คำสั่ง mget และ mput รับ y / n / q สำหรับใช่ / ไม่ใช่ / เลิก
  - ใช้ Control-C เพื่อยกเลิกคำสั่ง

ในกรณีของคุณคุณจะต้องใช้สวิตช์ -s เพื่อป้อนสคริปต์รวมถึงคำตอบการลงชื่อเข้าใช้

ตัวอย่างเช่น:

  1. สร้างไฟล์สคริปต์ (c: \ scriptfile.txt) ด้วยเนื้อหาต่อไปนี้:

    open
    servername_or_ip
    username
    password
    get
    /fullpath/thefile.txt
    c:\fullpath\thefile.txt
    quit
    
  2. ดำเนินการ ftp ด้วยสวิตช์ -s และระบุชื่อไฟล์สคริปต์

    C:\>ftp -s:c:\scriptfile.txt
    

บน Windows XP (ใช่ฉันรู้ใช่) ผลลัพธ์นี้เป็น "Unknown host /?"
Peter Mortensen
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.