如何使用命令行列出来自 Apple 服务器的所有 IPSW 文件

获取 Apple 提供的所有 IPSW 文件列表

许多高级用户在将 iOS 设备更新到最新版本时更喜欢使用固件文件,每次 iOS 更新发布时,我们都会发布直接下载最新版本的链接。每隔一段时间我们就会收到用户的问题,他们想知道我们如何找到这些文件链接,因为它们隐藏在 Apple 的下载服务器上,似乎隐藏在公众视野之外。好吧,这并没有什么神奇之处,它可以通过命令行轻松完成,只需使用一个简单的技巧即可直接从 Apple 获取完整的 IPSW 文件列表。在最基本的形式中,它几乎列出了所有内容,但通过对命令语法进行一些小的更改,您可以针对特定的 iOS 版本或与特定硬件匹配的文件进行排序。

这可能不会对每个人都有用,但对于喜欢使用 IPSW 的用户,或者对于需要下载一堆不同的固件文件以在一堆硬件上执行批量更新的系统管理员来说,这应该会有所帮助。对于其他人来说,这可能是一个教训,可以进一步证明我们 osxdaily 是花太多时间思考这些东西的书呆子。

如果您打算自己尝试这些,请复制完整的语法块并将其粘贴到命令行中。这些命令在 Web 上看起来是分开的,但它们应该作为单个命令字符串在一行中很好地粘贴到命令行中。

从 Apple 获取所有 iOS 设备的所有 IPSW 文件列表

以下命令字符串返回一个相当干净的列表,其中包含每台 iOS 设备、iPad、iPhone、iPod 的每个 IPSW 文件,由 Apple 的服务器托管:

<代码>curl http://ax.phobos.apple.com.edgesuite.net/WebObjects/MZStore.woa/wa/com.apple.jingle.appserver.client.MZITunesClientCheck/version | grep ipsw |排序-u | sed ‘s/<字符串>//g’ | sed ‘s///g’ | grep -v 受保护

为了遍历语法,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 |排序-u | sed ‘s/<字符串>//g’ | sed ‘s///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 |排序-u | sed ‘s/<字符串>//g’ | sed ‘s///g’ | grep -v 受保护

在末尾添加“> ~/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 |排序-u | sed ‘s/<字符串>//g’ | sed ‘s///g’ | grep -v 受保护

和以前一样,如果需要,您可以通过在末尾添加“> ~/path/to/text.txt”将其发送到文本文件中。

仅从 Apple 获取特定 iOS 版本的列表

与搜索特定 iOS 硬件类似,您也可以根据需要返回特定 iOS 版本。例如,以下语法将仅返回与 iOS 7.0.4 匹配的所有 IPSW 结果,由第二个 grep 中的版本字符串注明:

<代码>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 |排序-u | sed ‘s/<字符串>//g’ | sed ‘s///g’ | grep -v 受保护 | awk ‘{$1=$1}1’

Apple 推出更新的速度很快,而且由于采用了空中下载机制,大多数人几乎会在新更新可用时立即注意到它们。尽管如此,一些用户使用上述技巧的变体,通过定期查询 Apple 服务器上尚不存在的各种版本字符串来监视新的 iOS 版本。不过,这有点超出了本文的范围。

可能有更清洁和/或更好的方法来做到这一点,如果您有其他解决方案,请在评论中提出。