J'utilise l'authentification par clé, donc le mot de passe n'est pas un problème. J'ai un fichier dont je connais le nom et je veux simplement l'envoyer à une autre machine via sftp.
J'ai essayé de chercher, mais je n'ai trouvé cette question (apparemment simple) nulle part. Peut-être que mon Google-fu me fait tout simplement défaut aujourd'hui.
En bref: je suis sur ma machine locale, je veux envoyer un fichier (test.txt) à une machine distante. Les clés autorisées sont déjà fournies. Fondamentalement, je veux automatiser ces trois étapes:
sftp root@remote:/root/dropoff
put test.txt
quit
Existe-t-il une simple commande bash que je peux utiliser pour automatiser cela? La seule option que j'ai vue utilise un script bash pour effectuer le put/quit et utiliser l'option -b pour l'exécuter. Y a-t-il quelque chose de plus propre que ça? (Je ne suis pas intéressé à utiliser d'autres applications/outils.)
Merci!
Vous avez dit que vous n'êtes pas intéressé par d'autres outils, mais scp
est un bien meilleur choix pour les transferts de fichiers sans assistance. Voici un exemple scp:
scp test.txt root@remote:/root/dropoff
Je sais que c'est un ancien, mais vous pouvez également passer des arguments à une commande avec un Here Document
# The following is called a HERE document
sftp <user>@<remote> << SOMEDELIMITER
put test.txt
... # any commands you need to execute via sftp
quit
SOMEDELIMITER
chaque commande supplémentaire sera introduite dans la commande précédant le <<
et SOMEDELIMTER
peuvent être ce que vous voulez.
scp est une excellente option, mais sftp était le seul outil que j'ai pu utiliser en poussant de Linux vers Windows et vous êtes bloqué en utilisant FreeSSHD en mode service!
Je ne sais pas comment sftp était configurable lorsque cette question a été posée. Quoi qu'il en soit, 6 ans plus tard, vous pouvez mettre des commandes sftp comme PUT dans un fichier, puis référencer ce fichier dans votre appel sftp initial. Le rend l'ensemble du processus complètement non interactif et facilement configurable:
sftp -i /path/to/ssh-key -b /path/to/sftp-commands.txt root@remote:/root/dropoff
.... Où sftp-commands.txt contient juste
put test.txt; quit