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ó 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:
Không phải với các ftp
chươ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 ftp
thô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ụ ncftpget
và ncftpput
cho 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
( rsync
hoặ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à CurlFtpFS và LftpFS .
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 scp
hoặ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 .