SSH で起動したダウンロードをローカルファイルに保存する
ローカルのプロキシ経由のダウンロードと、リモートでの取得後に転送する方法のどちらかを選び、コマンドの出力とファイルのバイト列を分けて扱います。
SSH 経由でダウンローダーを実行する場合と、リモートプロキシ経由でローカルのダウンローダーを実行する場合では、ダウンロードの保存先が異なります:
| 構成 | ウェブサイトを取得するのは誰か | ファイルが書き込まれる場所 |
|---|---|---|
| リモートプロキシ経由のローカルダウンローダー | リクエストはローカルの HTTP クライアントが保持し、プロキシがそれを運びます | ローカルダウンローダーの出力パス |
| SSH 経由で起動したダウンローダー | リモートマシン上のプログラム | データを明示的に持ち帰らない限り、そのリモート側のパス |
許可された SSH アカウントとリモートにインストールされた curl があれば、成果物を標準出力で持ち帰れます:
ssh -T [email protected] 'curl --fail --silent --show-error https://downloads.example/file.bin' > file.part例のアカウントと URL を置き換えてください。リダイレクトは引用符で囲んだリモートコマンドの外側にあるため、ローカルのシェルが file.part を開きます。リモートコマンドの内側に置くと、パスはリモート環境のものになります。
新しい一時パスを使ってください。リモート操作が成功する前に、ローカルのシェルがそのファイルを作成したり切り詰めたりする可能性があります。最終的な名前を付ける前に、SSH の終了結果と成果物を確認してください。
標準出力には成果物のバイト列だけを含める必要があります。挨拶、進捗バナー、ラッパーのメッセージはそれを壊す可能性があります。診断情報は標準エラーに出すべきです。自分のファイル名に保存するリモートコマンドは、バイト列をまったく返さないことがあります。ラッパーを通してもダウンローダーの終了結果を保ってください。
代わりにリモートに保存し、SFTP でファイルを転送することもできます。SSH がすでにプロキシヘルパーを使っている場合は、その SSH ホストの項目を転送に再利用してください。目的がローカルのプロキシ作業フローなら、ダウンローダーはローカルに置き、対応するプロキシインターフェースを設定してください。
いずれの場合も、ノートパソコンに届ける必要があるファイルは、そのネットワーク接続を越えなければなりません。選択によって、ウェブサイトに向かう接続とダウンロードを行うプロセスが変わります。