Làm thế nào để xác định tên người dùng và mật khẩu trong lệnh ftp?


9

Tôi muốn tự động hóa một cuộc gọi đến ftp trong một kịch bản shell. Nếu tôi gõ

$ftp somehost.domain.com

Tôi được nhắc nhập tên người dùng và mật khẩu. Tôi muốn cung cấp tên người dùng và mật khẩu đó như một phần của cuộc gọi đến ftp. Các trang người đàn ông cho ftp nói rằng tôi có thể phát hành một lệnh sử dụng tại ftp nhắc - nhưng tôi muốn để đăng nhập vào ftp tất cả trong một đi. Điều đó có thể không? Tôi không thấy bất cứ điều gì trong các cờ cho ftp. Tôi thấy rằng tùy chọn -s cung cấp cho tôi tùy chọn chỉ định một số lệnh ftp khi tôi có dấu nhắc ftp - nhưng tôi cần cung cấp tên người dùng để đến dấu nhắc ...


expect(phần mở rộng tcl / tk của các loại) là một chương trình lý tưởng cho loại điều này - tức là. chờ một vài lời nhắc nhở; đưa ra phản hồi ... chờ câu trả lời; đưa ra một phản hồi mới ... expectđợi "ogin:" và gửi cho bạn tên người dùng, sau đó chờ "assword:" và gửi mật khẩu của bạn.
Baard Kopperud

Câu trả lời:


10

Sử dụng một .netrctập tin trong thư mục nhà của bạn.

Nội dung là:

# machine <hostname> login <username> password <password>
machine ftp.example.com login myuser password $ecret

Nếu đây là việc bạn đang lập trình, hãy viết .netrctrước khi kết nối, xóa nó khi bạn hoàn thành.


tập tin này cụ thể ftphay nó cũng được đọc bởi các chương trình khác?
terdon

Các netrc(5)trang người đàn ông nói rằng đó là "cho ftp(1)" nhưng tôi không chắc chắn rằng ftplà điều duy nhất mà sẽ sử dụng nó.
bahamat

Nếu bạn muốn tìm tệp ".netrc" của mình, chỉ cần sử dụng lệnh này:locate '.netrc'
goamn

1

Bạn cũng có thể viết tập lệnh shell ac bằng cách sử dụng tài liệu ở đây .

#!/bin/sh
HOST='someftpserver.com'
USER='username'
PASSWD='password'
FILES='*.txt'
#
ftp -nv $HOST>$FTPLOG <<END_SCRIPT
quote USER $USER
quote PASS $PASSWD
cd somedirectory
binary
mget $FILES
quit
END_SCRIPT

0

Bạn cũng có thể xem xét wputhoặc wgetlà lựa chọn thay thế, tùy thuộc vào nhu cầu của bạn.

Tôi đã không sử dụng wgetgần đây nhưng tôi đã sử dụng wputvì tôi không muốn tạo hoặc sửa đổi các tệp như được đề xuất trong một số câu trả lời trước đó.

Đối với wput, cú pháp là:

wput <filename> ftp://<username>:<password>@<address>
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.