Як вказати ім'я користувача та пароль у команді ftp?


9

Я хочу автоматизувати виклик до ftp у сценарії оболонки. Якщо я набираю

$ftp somehost.domain.com

Мені запропоновано ввести ім’я користувача та пароль. Я хочу надати це ім'я користувача та пароль як частину заклику до ftp. Сторінка man для ftp говорить, що я можу видати команду користувача у ftp-підказці - але я хочу увійти, щоб ftp все за один раз. Це можливо? Я не бачу нічого у прапорах для ftp. Я бачу, що опція -s дає мені можливість вказати кілька команд ftp, як тільки я отримаю швидке ftp - але мені потрібно дати ім'я користувача, щоб дістатися до підказки ...


expect(розширення сортів tcl / tk) - це програма, яка ідеально підходить для подібних речей - тобто. чекати деякого підказок; дати відповідь ... чекати відповіді; дайте нову відповідь ... expectзачекайте на "ogin:" і надішліть вам ім'я користувача, потім чекайте "assword:" і надішліть свій пароль.
Баард Копперуд

Відповіді:


10

Використовуйте .netrcфайл у своєму домашньому каталозі.

Вміст:

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

Якщо це ви робите програмно, напишіть .netrcперед підключенням, видаліть його, коли закінчите.


цей файл є специфічним ftpчи його також читають інші програми?
terdon

На netrc(5)сторінці чоловіка написано, що це "за ftp(1)", але я не впевнений, що ftpце єдине, що використовуватиме його.
bahamat

Якщо ви хочете знайти свій файл ".netrc", просто скористайтеся цією командою:locate '.netrc'
goamn

1

Ви також можете написати скрипт оболонки змінного струму, використовуючи тут документ, який буде мати щось подібне:

#!/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

Ви також можете розглянути wputабо wgetяк альтернативу, залежно від ваших потреб.

Я wgetнещодавно не використовував, але використовував, wputтому що не хотів створювати або змінювати файли, як було запропоновано в попередніх відповідях.

Для wputсинтаксису є:

wput <filename> ftp://<username>:<password>@<address>
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.