Как указать имя пользователя и пароль в команде 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это единственное, что будет его использовать.
— багамат

Если вы хотите найти свой файл .netrc, просто используйте эту команду:locate '.netrc'
— goamn

1

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

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