Connectez-vous avec le nom d'utilisateur et le mot de passe FTP de Linux
Quelle est la commande pour se connecter avec le FTP en une seule ligne ?
ftp username:password@my.domain.com
dit :
Mot de passe requis pour le nom d'utilisateur:password
Quelle est la commande pour se connecter avec le FTP en une seule ligne ?
ftp username:password@my.domain.com
dit :
Mot de passe requis pour le nom d'utilisateur:password
ftp -nv yourftpserver.com
puis user your_username
ou user anonymous
J'ai affiché cette réponse car ftp ftp://username:password@my.domain.com
ne me convenait pas.
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 meilleure option est d'utiliser un .netrc avec quelque chose comme un gpg pour des raisons de sécurité.
J'ai écrit un script à usage général pour cela, que je pourrais télécharger plus tard, mais cela se résume à
gpg -c .netrc
ou éventuellement avec une phrase de passe sur la ligne de commande et une destination de sortie :
gpg --passphrase <secretphrase> -o .netrc.gpg -c .netrc
Non indiqué ici, mais vous pouvez également utiliser des clés asymétriques (si vous les avez configurées) avec gpg pour rendre cela encore plus sûr.
Puis, lorsque vous êtes prêt à vous connecter
gpg .netrc.gpg
# or
gpg --passphrase <secretphrase> -o .netrc .netrc.gpg
ftp yourservername
rm .netrc
Un exemple de .netrc :
machine google.com
login <username>
password <secretpassword>
Je conserve en fait un hachage local et la copie originale de ces fichiers sur un ordinateur différent de celui sur lequel j'utilise les fichiers .netrc, et je vérifie le hachage du .netrc et du script que j'exécute, mais cela va au-delà de la question initiale du PO.
Vous pouvez essayer
my_ftp() {
ftp -i -n <<EOF
open $HOST
user "$USER" "$PASS"
$@
EOF
}
que vous pouvez ensuite appeler avec my_ftp $'ls subfolder\nanothercommand'
Cette solution n'est pas interactive mais le mieux que j'ai pu trouver
éditer : il vaut probablement mieux utiliser le curl à la place.