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

Login com nome de utilizador e palavra-passe FTP Linux

Qual é o comando para iniciar sessão com FTP tudo com uma linha?

ftp username:password@my.domain.com

diz:

Palavra-passe necessária para username:password

Respostas (5)

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

depois user your_usernameou user anonymous


Eu afixei esta resposta uma vez que ftp ftp://username:password@my.domain.com não funcionou para mim.

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

Poderia muito facilmente ter usado ftp --help& no entanto.

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

A melhor opção é utilizar um .netrc juntamente com algo como gpg para fins de segurança.

Escrevi um guião de propósito geral para isto, que posso carregar mais tarde, mas resume-se a:

gpg -c .netrc

ou opcionalmente com uma frase-chave na linha de comando e um destino de saída:

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

Não mostrado aqui, mas poderia adicionalmente utilizar chaves assimétricas (se as tiver configuradas) com gpg para tornar isto ainda mais seguro.

Então, quando estiver pronto para iniciar sessão

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

Um exemplo .netrc:

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

Na verdade, mantenho um hash local e a cópia original destes ficheiros num computador diferente daquele em que utilizo os ficheiros .netrc, e verifico o hash do .netrc e o script que corro, mas isso está acima e além da questão original do OP.

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

Usar netrc . É melhor do que dar a senha na linha de comando.

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

Pode tentar

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

que depois pode chamar com my_ftp $'ls subfolder\nanothercommand'

Esta solução não é interactiva mas o melhor que consegui descobrir

editar: Provavelmente o melhor é usar apenas o encaracolado.