Comment télécharger un fichier depuis la ligne de commande avec FTP ou SSH?

30

Je n'ai jamais fait cela auparavant et je crée un script shell bash pour le faire pour moi. Je vais également me connecter via ssh pour faire certaines choses (que je sais déjà faire). Alors peut-être qu'il existe un moyen de télécharger des fichiers via ssh pour que je puisse tout faire en une seule connexion?

Comment puis-je faire ceci?

#!/bin/sh

cd ./files-to-upload
#upload the files
Andrew
la source
Cela ne répond pas à cette question, mais cela pourrait peut-être aider certaines personnes: curl.io vous permet de télécharger un fichier via bash vers un hébergement http public (valable pendant quelques heures je pense)
Vincent Fenet

Réponses:

56

Vous pouvez utiliser scppour copier sur une machine distante.

scp <file to upload> <username>@<hostname>:<destination path>
tangens
la source
le mot de passe peut-il également être transmis? Cela initialise-t-il également une session ssh? Puis-je également exécuter d'autres commandes?
Andrew
2
Non, vous ne pouvez pas transmettre le mot de passe. Mais vous pouvez configurer l'authentification par clé ssh. Cela signifie que vous ne vous authentifiez pas via un mot de passe mais via une clé qui est stockée dans un fichier et transmise automatiquement lors de la connexion. Et non encore, vous ne pouvez pas exécuter d'autres commandes avec cela.
Felix
je veux dire, pouvez-vous vous connecter avec ssh, puis exécuter scp? Ou s'agit-il de commandes distinctes?
Andrew
2
sshet scpsont des commandes différentes. Pour une introduction, voir ssh.com/support/documentation/online/ssh/adminguide/32/…
tangens
1
@Felix aurait dû souligner que si vous n'avez pas configuré l'authentification par clé ssh, vous serez invité à entrer un mot de passe . Cela signifie que l'utilisation de cette configuration n'est pas une exigence critique pour utiliser cette commande
aexl
6

Vous recherchez probablement SCP ou similaire.

#!/bin/bash

cd ./files-to-upload
scp * user@host:/path/to/upload/files/to

bien sûr, cela doit être modifié à votre goût. Remplacez utilisateur @ hôte par vos informations réelles. Vous serez invité à saisir un mot de passe.

John T
la source
4

Si vous devez vraiment utiliser ssh (au lieu de scp), vous pouvez faire:

for filename in *; do
  cat $filename | ssh user@host "cd /path/to/upload/files/to; cat - > $filename"
done

mais le scp régulier (comme la suggestion de tangens ) est le meilleur.

Jimmy Hedman
la source
Im utilisant une connexion FTp, pourriez-vous s'il vous plaît dire comment transférer ou copier des fichiers du local vers le distant, im en utilisant filezilla ou winscp ... j'ai besoin d'extraire un zip ou une copie du local vers le distant
Sushivam
1

scp est la meilleure réponse car il serait crypté via SSH.

Cependant, si vous voulez le faire sur ftp standard, regardez ncftpput. Il est spécialement conçu pour télécharger un fichier:

NAME ncftpput - Programme de transfert de fichiers Internet pour les scripts

SYNOPSIS ncftpput [options] fichiers locaux du répertoire distant de l'hôte distant ...

DuPie
la source
0

curl est un bon programme qui gère plusieurs protocoles.

Joe Internet
la source
0

Lorsque vous utilisez la commande scp(copie sécurisée), il se connecte au client et si vous n'avez pas encore enregistré d'empreinte digitale pour le périphérique hôte, il vous demandera le mot de passe de l'hôte, sinon il devrait se connecter automatiquement à l'hôte, je crois.

David
la source
0

Pour l'instance ec2, vous devez également transmettre le .pemfichier,

$scp -i ~/Desktop/amazon.pem ~/Desktop/file.zip  ubuntu@ec2-54-166-128-20.compute-1.amazonaws.com:~/data/
Elavarasan
la source