2012-03-03 16:26:38 +0000 2012-03-03 16:26:38 +0000
23
23

Zaloguj się za pomocą nazwy użytkownika i hasła do Linux FTP

Jaka jest komenda do zalogowania się na FTP w jednej linii?

ftp username:password@my.domain.com

mówi:

Wymagane hasło dla username:password

Odpowiedzi (5)

9
9
9
2016-05-28 21:35:36 +0000
ftp -nv yourftpserver.com

następnie user your_username lub user anonymous


Zamieściłem tę odpowiedź, ponieważ ftp ftp://username:password@my.domain.com nie działał dla mnie.

Usage: { ftp | pftp } [-46pinegvtd] [hostname]
   -4: use IPv4 addresses only
   -6: use IPv6, nothing else
   -p: enable passive mode (default for pftp)
   -i: turn off prompting during mget
   -n: inhibit auto-login
   -e: disable readline support, if present
   -g: disable filename globbing
   -v: verbose mode
   -t: enable packet tracing [nonfunctional]
   -d: enable debugging
6
6
6
2012-03-03 16:38:19 +0000
ftp ftp://username:password@my.domain.com

Mogłeś całkiem łatwo użyć ftp --help.

4
4
4
2016-08-05 08:38:29 +0000

Najlepszą opcją jest użycie .netrc wraz z czymś takim jak gpg dla celów bezpieczeństwa.

Napisałem do tego celu skrypt ogólnego przeznaczenia, który być może wrzucę później, ale sprowadza się on do:

gpg -c .netrc

lub opcjonalnie z passphrase na linii poleceń i miejscem docelowym na wyjściu:

gpg --passphrase <secretphrase> -o .netrc.gpg -c .netrc

Nie pokazane tutaj, ale możesz dodatkowo użyć kluczy asymetrycznych (jeśli masz je skonfigurowane) z gpg, aby uczynić to jeszcze bardziej bezpiecznym.

Następnie, gdy jesteś gotowy do zalogowania się

gpg .netrc.gpg
# or
gpg --passphrase <secretphrase> -o .netrc .netrc.gpg
ftp yourservername
rm .netrc

Przykładowy .netrc:

machine google.com
login <username>
password <secretpassword>

W rzeczywistości trzymam lokalny hash i oryginalną kopię tych plików na innym komputerze niż ten, na którym używam plików .netrc, i weryfikuję hash .netrc i skrypt, który uruchamiam, ale to jest ponad i poza oryginalnym pytaniem OP.

1
1
1
2012-12-11 06:51:02 +0000

Użyj netrc . Jest to lepsze niż podawanie hasła w wierszu poleceń.

1
1
1
2019-02-18 16:18:22 +0000

Możesz spróbować

my_ftp() {
  ftp -i -n <<EOF
    open $HOST
    user "$USER" "$PASS"
    $@
EOF
}

które następnie możesz wywołać za pomocą my_ftp $'ls subfolder\nanothercommand'

To rozwiązanie nie jest interaktywne, ale najlepsze, jakie mogłem wymyślić

edit: Prawdopodobnie najlepiej po prostu użyć curl zamiast tego.