如何使用命令行列出来自 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/版本 | grep ipsw |排序-u | sed 's///g' | sed 's///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/版本 | 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/版本 | grep ipsw | grep iPhone |排序-u | sed 's///g' | sed 's///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/版本 | grep ipsw | grep iPad |排序-u | sed 's///g' | sed 's///g' | grep -v protected
和以前一样,如果需要,您可以通过在末尾添加“> ~/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/版本 | grep ipsw | grep 7.0.4 |排序-u | sed 's///g' | sed 's///g' | grep -v 受保护 | awk '{$1=$1}1'
Apple 推出更新的速度很快,而且由于无线机制,大多数人几乎会在新更新可用时立即注意到它们。尽管如此,一些用户使用上述技巧的变体,通过定期查询 Apple 服务器上尚不存在的各种版本字符串来监视新的 iOS 版本。不过这有点超出了本文的范围。
可能有更清洁和/或更好的方法来做到这一点,如果您有其他解决方案,请在评论中提出。