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

Inicie sesión con el nombre de usuario y la contraseña de FTP de Linux

¿Cuál es el comando para iniciar la sesión con FTP todo con una línea?

ftp username:password@my.domain.com

dice:

Se requiere una contraseña para el nombre de usuario:contraseña

Respuestas (5)

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

entonces user your_username o user anonymous

  • *

He publicado esta respuesta ya que ftp ftp://username:password@my.domain.com no me ha funcionado.

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

Sin embargo, podría haber utilizado ftp --help.

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

La mejor opción es usar un .netrc junto con algo como gpg por motivos de seguridad.

He escrito un script de propósito general para esto, que puede que suba más tarde, pero se reduce a:

gpg -c .netrc

u opcionalmente con una frase de contraseña en la línea de comandos y un destino de salida:

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

No se muestra aquí, pero podría utilizar adicionalmente claves asimétricas (si las tiene configuradas) con gpg para hacer esto aún más seguro.

Luego, cuando esté listo para iniciar sesión

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

Un ejemplo de .netrc:

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

En realidad, mantengo un hash local y la copia original de estos archivos en una computadora diferente a la que uso los archivos .netrc, y verifico el hash del .netrc y el script que ejecuto, pero eso está por encima de la pregunta original del OP.

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

Utilice netrc . Es mejor que dar la contraseña en la línea de comandos.

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

Puedes probar con

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

que luego puedes llamar con my_ftp $'ls subfolder\nanothercommand'

Esta solución no es interactiva pero es lo mejor que he podido averiguar

edit: Probablemente lo mejor sea usar curl en su lugar.