Jak podać nazwę użytkownika i hasło w poleceniu ftp?

9

Chcę zautomatyzować wywołanie ftp w skrypcie powłoki. Jeśli piszę

$ftp somehost.domain.com

Zostanie wyświetlony monit o podanie nazwy użytkownika i hasła. Chcę podać tę nazwę użytkownika i hasło w ramach połączenia z ftp. Strona podręcznika dla ftp mówi mogę wydać polecenie użytkownika na ftp zachęty - ale chcę, aby zalogować się do ftp wszystko za jednym zamachem. Czy to jest możliwe? Nic nie widzę na flagach dla ftp. Widzę, że opcja -s daje mi możliwość określenia niektórych poleceń ftp, gdy pojawi się monit ftp - ale muszę podać nazwę użytkownika, aby dostać się do monitu ...

bernie2436
źródło
expect(swego rodzaju rozszerzenie tcl / tk) to program, który idealnie nadaje się do tego rodzaju rzeczy - tj. poczekaj na monit; daj odpowiedź ... poczekaj na odpowiedź; daj nową odpowiedź ... expectpoczekaj na „ogin:” i wyślij ci nazwę użytkownika, a następnie poczekaj na „assword:” i wyślij hasło.
Baard Kopperud

Odpowiedzi:

10

Użyj .netrcpliku z katalogu domowego.

Treść jest:

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

Jeśli robisz to programowo, napisz .netrcprzed połączeniem, usuń to po zakończeniu .

bahamat
źródło
czy ten plik jest specyficzny dla ftpinnych programów, czy też jest odczytywany?
terdon
netrc(5)Strona mężczyzna mówi, że jest „za ftp(1)”, ale nie jestem pewien, że ftpjest jedyną rzeczą, która będzie z niego korzystać.
bahamat
Jeśli chcesz znaleźć plik „.netrc”, użyj tego polecenia:locate '.netrc'
goamn
1

Możesz również napisać skrypt powłoki ac za pomocą dokumentu doc, który wyglądałby mniej więcej tak:

#!/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
użytkownik81134
źródło
0

Możesz również rozważyć wputlub wgetjako alternatywę, w zależności od potrzeb.

Nie korzystałem wgetostatnio, ale użyłem, wputponieważ nie chciałem tworzyć ani modyfikować plików, jak sugerowano w niektórych wcześniejszych odpowiedziach.

Ponieważ wputskładnia jest następująca:

wput <filename> ftp://<username>:<password>@<address>
Crumeniferus
źródło