
コマンドラインを使用してAppleサーバーからすべてのIPSWファイルを一覧表示する方法
多くの上級ユーザーは、iOS デバイスを最新バージョンにアップデートする際にファームウェア ファイルを使用することを好んでおり、iOS アップデートがリリースされるたびに、最新バージョンへの直接ダウンロード リンクを掲載しています。しかし、それらのファイル リンクは Apple のダウンロード サーバーに隠されており、一般の目に触れないようなので、どうやって見つけるのかとユーザーから時々質問を受けます。実は、これには魔法はなく、Apple から直接入手できる IPSW ファイルの完全なリストを取得する簡単なトリックを使用して、コマンドラインから簡単に実行できます。最も基本的な形式では文字通りすべてがリストされますが、コマンド構文を少し変更するだけで、特定の iOS バージョンや特定のハードウェアに一致するファイルを並べ替えることができます。
これは全ての人にとって役立つとは限らないでしょうが、IPSWを使うのが好きなユーザーや、複数のハードウェアを一括アップデートするために様々なファームウェアファイルをダウンロードする必要があるシステム管理者にとっては役立つはずです。それ以外の人にとっては、osxdailyの私たちがこういったことに時間をかけすぎているオタクであることを改めて証明する教訓となるでしょう。
実際に試してみる場合は、構文ブロック全体をコピーしてコマンドラインに貼り付けてください。Web上ではコマンドが分割されているように見えますが、1行の単一のコマンド文字列としてコマンドラインに貼り付けると問題なく機能します。
AppleからすべてのiOSデバイスのIPSWファイルのリストを取得する
次のコマンド文字列は、Apple のサーバーでホストされているすべての iOS デバイス (iPad、iPhone、iPod など) の文字通りすべての IPSW ファイルのかなりクリーンなリストを返します。
curl https://itunes.apple.com/WebObjects/MZStore.woa/wa/com.apple.jingle.appserver.client.MZITunesClientCheck/version | grep ipsw | sort -u
または
curl http://ax.phobos.apple.com.edgesuite.net/WebObjects/MZStore.woa/wa/com.apple.jingle.appserver.client.MZITunesClientCheck/version | grep ipsw | sort -u | sed 's/<string>//g' | sed 's/<\/string>//g' | grep -v protected
構文を詳しく説明すると、curl は Apple のサーバー URL から「バージョン」リストにアクセスします (ちなみに、これは iTunes がアップデートが利用可能であることを検出したときにアクセスする URL と同じです)。次に、このリストを grep コマンドに渡して「ipsw」に一致させますが、「protected」は除外されます。sort -u は、返されるリスト項目が一意であることを確認します。最後に、結果は「sed」に渡され、結果から不要な XML が削除されます。このコマンドを実行すると、すべてがコマンドラインにダンプされます。「more」に渡して読みやすくすることもできますが、一部のユーザーにとっては、次のようにテキストファイルにリダイレクトする方が好みかもしれません。
curl http://ax.phobos.apple.com.edgesuite.net/WebObjects/MZStore.woa/wa/com.apple.jingle.appserver.client.MZITunesClientCheck/version | grep ipsw | sort -u | sed 's/<string>//g' | sed 's/<\/string>//g'| grep -v protected > ~/Desktop/ipswlist.txt
これにより、すべてがデスクトップ上の「ipswlist.txt」という名前のテキスト ファイルにダンプされます。
コマンドラインからすべてのiPhone IPSWファイルのリストを取得する
他のiOSファイルは気にせず、iPhoneのIPSWのリストだけが欲しいですか?iPhoneにgrepコマンドを使えば、コマンドの残りの部分は変わりません。
curl http://ax.phobos.apple.com.edgesuite.net/WebObjects/MZStore.woa/wa/com.apple.jingle.appserver.client.MZITunesClientCheck/version | grep ipsw | grep iPhone | sort -u | sed 's/<string>//g' | sed 's/<\/string>//g' | grep -v protected
結果をデスクトップ上のテキスト ファイルに送信するには、末尾に「> ~/Desktop/iPhoneIPSW.txt」を追加します。
Appleのサーバーで利用可能なすべてのiPad IPSWのリストを取得します
grep を使用して iPhone を検索するのと同様に、「iPad」を指定すると、代わりに iPad ファームウェア ファイルのみが返されます。
curl http://ax.phobos.apple.com.edgesuite.net/WebObjects/MZStore.woa/wa/com.apple.jingle.appserver.client.MZITunesClientCheck/version | grep ipsw | grep iPad | sort -u | sed 's/<string>//g' | sed 's/<\/string>//g' | grep -v protected
前と同様に、必要に応じて末尾に「> ~/path/to/text.txt」を追加してテキスト ファイルに送信できます。
Appleから特定のiOSバージョンのみのリストを取得する
特定のiOSハードウェアを検索する場合と同様に、必要に応じて特定のiOSバージョンを返すこともできます。例えば、次の構文は、2番目のgrepでそのバージョン文字列が示すiOS 7.0.4に一致するすべてのIPSW結果のみを返します。
curl http://ax.phobos.apple.com.edgesuite.net/WebObjects/MZStore.woa/wa/com.apple.jingle.appserver.client.MZITunesClientCheck/version | grep ipsw | grep 7.0.4 | sort -u | sed 's/<string>//g' | sed 's/<\/string>//g' | grep -v protected | awk '{$1=$1}1'
Appleはアップデートを迅速にリリースしており、Over-the-Air(OTA)の仕組みのおかげで、ほとんどのユーザーは新しいアップデートが利用可能になるとすぐに気づきます。しかしながら、一部のユーザーは上記のトリックのバリエーションを使って、Appleのサーバーにまだ存在しない様々なバージョン文字列を定期的にクエリすることで、新しいiOSリリースを監視しています。ただし、これはこの記事の範囲外です。
これを行うには、よりクリーンでより良い方法があるかもしれません。別の解決策がある場合は、コメントでお知らせください。