私はキー認証を使用しているので、パスワードは問題になりません。名前がわかっているファイルがあり、sftp経由で別のマシンに送信したいだけです。
検索を試みましたが、この(一見単純そうな)質問はどこにも見つかりませんでした。たぶん、今日のGoogle-fuは単に私を失敗させているのかもしれません。
要するに、私は自分のローカルマシンでファイル(test.txt)をリモートマシンに送信したいと考えています。承認済みのキーはすでに提供されています。基本的に私はこれらの3つのステップを自動化したいと思います:
sftp root@remote:/root/dropoff
put test.txt
quit
これを自動化するために使用できる簡単なbashコマンドはありますか?私が見た唯一のオプションは、bashスクリプトを使用してput/quitを実行し、-bオプションを使用してそれを実行することです。それ以上にきれいなものはありますか? (他のアプリケーション/ツールの使用には興味がありません。)
ありがとう!
他のツールには興味がないとおっしゃっていましたが、無人ファイル転送にはscp
の方がはるかに適しています。 scpの例を次に示します。
scp test.txt root@remote:/root/dropoff
私はこれが古いものであることを知っていますが、 ここのドキュメント を使用してコマンドに引数を渡すこともできます
# The following is called a HERE document
sftp <user>@<remote> << SOMEDELIMITER
put test.txt
... # any commands you need to execute via sftp
quit
SOMEDELIMITER
追加の各コマンドは、<<
の前のコマンドに入力され、SOMEDELIMTER
は任意の名前にすることができます。
scpは優れたオプションですが、LinuxからWindowsにプッシュするときにsftpが唯一のツールであり、サービスモードでFreeSSHDを使用できません。
この質問が尋ねられたとき、私はsftpがどのように構成可能であったか知りません。とにかく、6年後、PUTのようなsftp-commandsをファイルに入れて、最初のsftp-callでこのファイルを参照できます。これにより、プロセス全体が完全に非インタラクティブになり、簡単に構成可能になります。
sftp -i /path/to/ssh-key -b /path/to/sftp-commands.txt root@remote:/root/dropoff
.... sftp-commands.txtに含まれるのは
put test.txt; quit