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