Ceci est une question très basique que je suis tout juste nouvelle à bash et ne pouvais pas comprendre comment faire cela. Googler ne m'a malheureusement conduit nulle part.
Mon objectif est de me connecter avec sftp à un serveur, de télécharger un fichier, puis de me déconnecter.
J'ai le script suivant:
UpdateJar.sh
#!/bin/bash
sftp -oPort=23 [email protected]:/home/kalenpw/TestWorld/plugins
#Change directory on server
#cd /home/kalenpw/TestWorld/plugins
#Upload file
put /home/kalenpw/.m2/repository/com/Khalidor/TestPlugin/0.0.1-SNAPSHOT/TestPlugin-0.0.1-SNAPSHOT.jar
exit
le problème est que ce script établira une connexion sftp et ne fera rien. Une fois que je tape manuellement exit dans la connexion, il essaie d'exécuter la commande put mais parce que la session sftp a été fermée, il dit simplement put: command not found.
Comment puis-je obtenir que cela fonctionne correctement?
Merci
Réponses:
Vous pouvez changer votre script pour passer des commandes dans un document ici, par exemple,
Le
<<
marqueur suivi du nom (EOF
) indique au script de passer les lignes suivantes jusqu'à ce que le nom soit trouvé au début de la ligne (par lui-même).la source
Vous préférerez peut-être utiliser
scp
au lieu desftp
.scp
se comporte comme lacp
commande ordinaire , mais les fichiers peuvent être distants:Cela copie le fichier sur votre machine locale dans un répertoire sur la machine distante sans avoir à utiliser l'interface de commande de style ftp à l'ancienne.
Les
ssh
,scp
et lessftp
services sont généralement disponibles si l' un d'entre eux sont; le même programme démon les fournit tous simultanément. En principe, l'administrateur du serveur peut choisir de désactiver l'un d'eux, mais en pratique, c'est assez rare.la source
scp
est déjà disponible sur ma machineVous pouvez également utiliser l'
-b
option desftp
pour indiquer un fichier contenant des commandes poursftp
.Par exemple, vous pouvez mettre toutes vos commandes dans un fichier
sftp_commands.txt
:et fonctionner
sftp
comme:Ou vous pouvez également passer les commandes via STDIN si vous ne souhaitez pas utiliser de fichier.
De
man sftp
:la source
Une autre option serait d'utiliser curl :
la source