Chuyển mã FTP


7

Có cách nào để shebang-ify ftp và viết các tập lệnh FTP nhỏ không?

Ví dụ:

#!/usr/bin/ftp
open 192.168.1.1
put *.gz
quit

Có suy nghĩ gì không?

Câu trả lời:


10

Không phải với các ftpchương trình tôi đã chạy, vì họ mong đợi một tập lệnh trên đầu vào tiêu chuẩn của họ nhưng một shebang sẽ chuyển tên tập lệnh trên dòng lệnh của họ.

Bạn có thể sử dụng tài liệu ở đây để truyền tập lệnh ftpthông qua trình bao bọc.

#!/bin/sh
ftp <<EOF
open 192.168.1.1
put *.gz
EOF

Lftp chấp nhận một tên tập lệnh được truyền làm đối số.

#!/usr/bin/lftp -f
open 192.168.1.1
put *.gz

Ncftp đi kèm với hai công cụ ncftpgetncftpputcho các lô đơn giản được hoặc đặt.

Zsh bao gồm một mô-đun FTP . Sử dụng trình bao phù hợp thay vì tập lệnh FTP thẳng có lợi thế là bạn có thể phản ứng với các lỗi.

#!/bin/zsh
zmodload zsh/zftp
open 192.168.1.1
put *.gz

Tất nhiên có rất nhiều ngôn ngữ khác bạn có thể sử dụng: Perl, Python, Ruby, v.v.

Một cách tiếp cận khác là gắn máy chủ FTP dưới dạng thư mục và sau đó sử dụng cp( rsynchoặc các công cụ khác) để sao chép tệp. Có nhiều hệ thống tập tin FUSE để truy cập FTP, chủ yếu là CurlFtpFSLftpFS .

Lưu ý rằng nếu bạn đang dự định sử dụng xác thực (có thể nếu bạn đang tải lên) và bạn có quyền kiểm soát máy chủ, bạn sẽ tốt hơn với quyền truy cập SSH. Nó an toàn hơn và linh hoạt hơn. Để sao chép tệp qua SSH, bạn có thể sử dụng scphoặc sftp, hoặc rsync để đồng bộ hóa hiệu quả (nếu một số tệp có thể đã ở đó) hoặc Unison (để đồng bộ hóa hai chiều) hoặc gắn kết với SshFS .


Câu trả lời hay và để trả lời: Kịch bản mà tôi đang cố gắng thay thế sử dụng phương pháp "ftp << EOF", hoạt động tốt và ổn, nó trông giống như kiểu mẫu mà các shebang cố gắng trừu tượng hóa.
user3454
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.