通常、ファイル拡張子で終わる URL を持つファイルをダウンロードします。
Ubuntu ISOをダウンロードするには、
wget http://releases.ubuntu.com/14.04.3/ubuntu-14.04.3-desktop-amd64.iso
しかし、ASP.Net / IIS を使用していると思われるサイトに遭遇しました。
ISOへのリンクはこの形式です(...ポリシーによりリンクの内容を削除しました):
http://some.ip.in.here/website.com/IMAGENAME.ISO?md5=hUhpyFjk7zEskw06ZhrWAQ&expires=1454811899
MD5 と有効期限がパラメータとして含まれているため、これをダウンロードする方法がわかりません。wget では、この ISO ではなく、Web ページのみがダウンロードされます。
助言がありますか?
答え1
使用
wget "http://some.ip.in.here/website.com/IMAGENAME.ISO?md5=hUhpyFjk7zEskw06ZhrWAQ&expires=1454811899"
説明: URL に「&」文字が含まれています。Linux などのシステムでは、これによりバックグラウンド プロセスになります。
解決策は、URL を二重引用符 ( ) で囲み、"
1 つの引数として扱うことです。
答え2
複雑なURLから適切なファイル名を取得したいだけの場合は、出力ドキュメントオプション。
-O file
--output-document=file
どちらの形式でも機能します。
前述のように、URL 内の特殊文字がコマンド パーサーによって解釈されないようにしてください。
答え3
これを行うには2つの方法がありますカール。
この最初の方法では、-O
URL のリモート名に基づいてファイルを書き出すフラグを使用します。この場合、ファイルは としてシステムに書き出される可能性が最も高くなりますIMAGENAME.ISO?md5=hUhpyFjk7zEskw06ZhrWAQ&expires=1454811899
。URL 値が二重引用符で囲まれていることに注意してください。これは&
、 が?
Bash コマンドとして誤って解釈される可能性があるためです。
curl -O -L "http://some.ip.in.here/website.com/IMAGENAME.ISO?md5=hUhpyFjk7zEskw06ZhrWAQ&expires=1454811899";
この方法は技術的には「機能」しますが、ファイル名が紛らわしいです。そのため、この別の方法では、出力リダイレクト ( >
URL の後にファイル名を続ける) を使用して、ファイルの内容を という名前のファイルに出力しますIMAGENAME.ISO
。
curl -L "http://some.ip.in.here/website.com/IMAGENAME.ISO?md5=hUhpyFjk7zEskw06ZhrWAQ&expires=1454811899" > "IMAGENAME.ISO";
したがって、私に言わせれば、2 番目の方法は、ほとんどの平均的な使用には最適です。また、-L
両方のコマンドで使用されているフラグにも注意してください。そのコマンドは、ダウンロード サービスのファイルは、宛先のペイロード ファイルに到達する前に数回リダイレクトされることが多いため、ファイルのダウンロード URL にある可能性のあるリダイレクト リンクに従うように Curl に指示します。