Cách tải xuống tệp từ trang FTP trong một dòng lệnh mà không cần tương tác của người dùng (Windows)


13

Tôi biết có một lệnh FTP có thể được chạy từ dòng lệnh trên Windows và nó tải xuống một tệp từ một trang FTP. Mật khẩu người dùng + được chỉ định trong "đó" cmd một dòng. Các tùy chọn + mật khẩu này phải nằm trên dòng lệnh đó.

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

Bạn có cần tải xuống qua FTP hay bạn chỉ cần tải xuống các tệp đó với bất kỳ chương trình nào? (Rsync có thể đọc từ một tệp có tên để đồng bộ hóa và từ dòng lệnh. Scp cũng có thể làm điều đó từ dòng lệnh. Cả hai đều không cổ xưa như văn bản thuần túy, no_true_security FTP).
Hennes

Câu trả lời:


13

Hãy thử điều này: Các tệp hàng loạt - Tải xuống FTP không giám sát

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

để tải xuống ẩn danh

hoặc là:

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

khi cần xác thực.


Như @XavierStuvw đã chỉ ra thông qua các chỉnh sửa và bình luận, việc hoán đổi WGETthành chữ thường wgetsẽ hoạt động trong linux.

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

Tôi không thấy bất kỳ lệnh nào có tùy chọn chuyển đổi người dùng và mật khẩu trong MỘT dòng ở đó.
soundhax

-s switch đã ở trong câu như tôi nhớ
soundhax

2
Chào mừng bạn đến với Siêu người dùng! Trong khi điều này về mặt lý thuyết có thể trả lời câu hỏi, tốt hơn là nên bao gồm các phần thiết yếu của câu trả lời ở đây, và cung cấp liên kết để tham khảo.
Luke Luke

1
@CalvT Không phản đối. Lợi ích được hình dung của nhận xét là người dùng Linux có thể truy cập trang này sau khi tìm kiếm trên internet và giám sát hệ thống mà nó áp dụng. Nó đã xảy ra với tôi, trên thực tế.
XavierStuvw

1
@CalvT Tiêu đề thực sự chính xác, nhưng các công cụ tìm kiếm thường trực quan hóa toàn bộ khung trả lời và thật dễ dàng để văng vào đó. Tất nhiên điều này không nên giảm giá cho người đọc khỏi phải chú ý, nhưng trong trường hợp này, thật trùng hợp khi các hướng dẫn của Linux và Windows về cơ bản là giống nhau. Tốt lắm, cảm ơn.
XavierStuvw

8

Tôi tìm thấy con đường:

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

Điều này không hoạt động khi tôi đã thử nó (cuối cùng tôi đã sử dụng ứng dụng khách dòng lệnh của WinSCP ). Phiên bản Windows nào đã được thử nghiệm trên?
Peter Mortensen

Bạn có thể giải thích làm thế nào dòng này hoạt động? Không thể tìm thấy bất kỳ tài liệu. Tôi đang cố gắng làm cho nó hoạt động với psftp
stallingOne

@stallingOne Hãy nghĩ về &bộ ngắt dòng ... nó thực sự là nhiều lệnh. Về cơ bản, ông xây dựng một kịch bản, từng dòng một, sử dụng echovà sau đó nói ftpđể chạy nó. Anh ấy cũng đặt tên tập tin kịch bản ftp, điều này làm cho nó khó hiểu.
Havenard

Lựa chọn kém của tên tập tin. "Ftp" là cả tên tệp của tập lệnh mà anh ta xây dựng và tên của exe. Vì vậy, độ phân giải đường dẫn tại ftp -n -v -s:ftplà một chút vội vàng. (Mỗi lần sử dụng "ftp" đề cập đến những thứ khác nhau)
Chad Schouggins

2

Lưu ý rằng bạn có thể yêu cầu cú pháp của một lệnh trong DOS bằng cách sử dụng /? công tắc điện. Ví dụ:

C: \> ftp /?

Chuyển tệp đến và từ một máy tính chạy dịch vụ máy chủ FTP
(đôi khi được gọi là daemon). Ftp có thể được sử dụng tương tác.

FTP [-v] [-d] [-i] [-n] [-g] [-s: tên tệp] [-a] [-A] [-x: sendbuffer] [-r: recvbuf
fer] [-b: asyncbuffers] [-w: windowsize] [host]

  -v Loại bỏ hiển thị các phản hồi của máy chủ từ xa.
  -n Loại bỏ tự động đăng nhập khi kết nối ban đầu.
  -i Tắt nhắc nhở tương tác trong nhiều tệp
                  chuyển nhượng.
  -d Cho phép gỡ lỗi.
  -g Tắt tên tệp globalbing (xem lệnh GLOB).
  -s: tên tệp Chỉ định tệp văn bản chứa các lệnh FTP; các
                  các lệnh sẽ tự động chạy sau khi FTP khởi động.
  -a Sử dụng bất kỳ giao diện cục bộ nào khi kết nối dữ liệu ràng buộc.
  -Một đăng nhập là ẩn danh.
  -x: gửi sockbuf Ghi đè kích thước SO_SNDBUF mặc định là 8192.
  -r: recv sockbuf Ghi đè kích thước SO_RCVBUF mặc định là 8192.
  -b: số lượng async Ghi đè số lượng async mặc định là 3
  -w: windowsize Ghi đè kích thước bộ đệm truyền mặc định là 65535.
  máy chủ Chỉ định tên máy chủ hoặc địa chỉ IP của điều khiển từ xa
                  máy chủ để kết nối.

Ghi chú:
  - Các lệnh mget và mput lấy y / n / q để có / không / thoát.
  - Sử dụng Control-C để hủy bỏ các lệnh.

Trong trường hợp của bạn, bạn sẽ muốn sử dụng khóa -s để cung cấp cho tập lệnh, bao gồm các phản hồi đăng nhập.

Ví dụ:

  1. Tạo tệp tập lệnh (c: \ scriptfile.txt) với nội dung sau:

    open
    servername_or_ip
    username
    password
    get
    /fullpath/thefile.txt
    c:\fullpath\thefile.txt
    quit
    
  2. thực hiện ftp với khóa -s và chỉ định tên tệp script

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

Trên Windows XP (vâng, vâng, tôi biết), điều này dẫn đến "Máy chủ không xác định /?."
Peter Mortensen
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.