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

Accedi con il nome utente e la password di Linux FTP

Qual è il comando per accedere con FTP tutto con una linea?

ftp username:password@my.domain.com

dice:

Password richiesta per username:password

Risposte (5)

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

poi user your_username o user anonymous


Ho postato questa risposta poiché ftp ftp://username:password@my.domain.com non ha funzionato per me.

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

Avresti potuto facilmente usare ftp --help però.

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

L'opzione migliore è usare un .netrc insieme a qualcosa come gpg per scopi di sicurezza.

Ho scritto uno script generico per questo, che potrei caricare più tardi, ma si riduce a:

gpg -c .netrc

o opzionalmente con una passphrase sulla riga di comando e una destinazione di uscita:

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

Non mostrato qui, ma potreste anche usare chiavi asimmetriche (se le avete impostate) con gpg per rendere questo ancora più sicuro.

Poi quando siete pronti per il login

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

Un esempio di .netrc:

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

Io in realtà tengo un hash locale e la copia originale di questi file su un computer diverso da quello su cui uso i file .netrc, e verifico l'hash del .netrc e lo script che eseguo, ma questo va oltre la domanda originale dell'OP.

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

Usa netrc . È meglio che dare la password sulla linea di comando.

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

Puoi provare

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

che poi puoi chiamare con my_ftp $'ls subfolder\nanothercommand'

Questa soluzione non è interattiva ma è la migliore che ho trovato

edit: Probabilmente ti conviene usare solo curl.