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 ...


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 .


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

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>
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.