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ź ...expect
poczekaj na „ogin:” i wyślij ci nazwę użytkownika, a następnie poczekaj na „assword:” i wyślij hasło.Odpowiedzi:
Użyj
.netrc
pliku z katalogu domowego.Treść jest:
Jeśli robisz to programowo, napisz
.netrc
przed połączeniem, usuń to po zakończeniu .źródło
ftp
innych programów, czy też jest odczytywany?netrc(5)
Strona mężczyzna mówi, że jest „zaftp(1)
”, ale nie jestem pewien, żeftp
jest jedyną rzeczą, która będzie z niego korzystać.locate '.netrc'
Możesz również napisać skrypt powłoki ac za pomocą dokumentu doc, który wyglądałby mniej więcej tak:
źródło
Możesz również rozważyć
wput
lubwget
jako alternatywę, w zależności od potrzeb.Nie korzystałem
wget
ostatnio, ale użyłem,wput
ponieważ nie chciałem tworzyć ani modyfikować plików, jak sugerowano w niektórych wcześniejszych odpowiedziach.Ponieważ
wput
składnia jest następująca:źródło