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