web-dev-qa-db-fra.com

Comment exécuter des commandes FTP sur une ligne?

Voici ce que je fais quand je me connecte à un FTP:

ftp user:password@server
ftp: user:password@server: Unknown Host
ftp> echo HELLO WORLD!
ftp> quit

J'aimerais faire une commande FTP d'une ligne ...

ftp user:password@server -command "echo HELLO WORLD"

ou

"echo HELLO WORLD" | ftp user:password@server 

Quelque chose de similaire ... dans le cadre d'un script que j'essaie de créer. Rien ne se transfère, je dois juste faire écho à quelques instructions et c’est le moyen le plus simple que j’ai trouvé de le faire entre deux de mes systèmes.

18
WernerCD

C'est vraiment un travail pour SSH (comme d'autres l'ont déjà souligné), mais si vous êtes déterminé à utiliser ftp, essayez lftp . Il est disponible gratuitement pour toutes les versions actuellement prises en charge d'Ubuntu. Vous pouvez l'installer avec la commande Sudo apt install lftp

lftp -u username,password -e "your command;quit" ftp.site.com

lftp documente un commutateur -c qui exécute la commande puis se ferme, mais il semble rompu dans la plupart des distributions. -e vous gardera connecté sauf si vous émettez un quit.

20
charlesbridge

J'ai trouvé ce fil lorsque je cherchais un moyen de faire en sorte qu'une seule commande ftp exécute un transfert de fichier de cette machine vers le serveur ftp. Voici comment:

Créez un fichier contenant les commandes ftp: (appelez-le 'ftpcommands.txt')

 open YourFtpServer.com
 user YourUserName YourPassword
 put localfilename remotefilename
 bye

Ensuite, exécutez la commande ftp et alimentez le fichier:

 ftp -n < ftpcommands.txt

L'option -n empêche ftp d'essayer de se connecter automatiquement lorsqu'il reçoit votre commande 'open'.

J'espère que ça aide quelqu'un. Je ne pouvais rien trouver en ligne qui soit cette solution, donc je devais le découvrir moi-même.

18
Jack

Vous ne pouvez pas utiliser FTP pour exécuter des commandes à distance. Il représente le protocole de transfert de fichier. Ce dont vous avez réellement besoin, c'est SSH.

Tout ce que vous avez à faire est d’installer le package ssh sur les deux ordinateurs, puis suivez ce guide pour configurer des connexions sans mot de passe.

Et maintenant, comment l'appeler:

ssh username@Host echo "Hello World\!"

Par exemple, c'est moi qui me le fais:

nick@AccessDenied:~$ ssh nick@localhost echo "Hello World\!"
Hello World!
2
nickguletskii

Pour compléter la réponse @charlesbridge, incluez dans votre fichier ~/.bashrc les éléments suivants:

alias yoursite="lftp -u <username> -e \"<commandA;commandB>\" yoursite.com"

Source le fichier:

source ~/.bashrc

Maintenant, utilisez l’alias "yoursite" pour vous connecter et exécuter autant de commandes que vous le souhaitez.

1
Alan

Installez busybox en utilisant:

apt-get install busybox

busybox peut fonctionner sous Linux ou dans un système intégré, puis utiliser ftpget et ftpput

busybox ftpput -u USER -p PASSWD URL_FTPSERVER FILE_U_WANT

busybox ftpget -u USER -p PASSWD URL_FTPSERVER FILE_U_WANT
0
user2328368