Comment lister tous les fichiers IPSW à partir de serveurs Apple à l'aide de la ligne de commande

De nombreux utilisateurs avancés préfèrent utiliser les fichiers de firmware lors de la mise à jour de leurs appareils iOS à la dernière version, et chaque fois qu'une mise à jour iOS sort, nous publions des liens de téléchargement direct pour les dernières versions. De temps en temps nous recevons des questions d'utilisateurs qui se demandent comment nous trouvons ces liens de fichiers, car ils sont cachés sur les serveurs de téléchargement d'Apple, apparemment cachés de la vue publique. Eh bien, il n'y a pas de magie à cela et cela se fait facilement grâce à la ligne de commande avec un truc simple qui tire une liste complète des fichiers IPSW qui sont disponibles directement auprès d'Apple. À sa forme la plus basique, il répertorie littéralement tout, mais avec quelques changements mineurs à la syntaxe de commande, vous pouvez trier pour des versions iOS spécifiques ou pour des fichiers qui correspondent à un morceau de matériel spécifique.



Cela ne sera probablement pas utile à tout le monde, mais pour les utilisateurs qui aiment travailler avec IPSW, ou pour les administrateurs système qui ont besoin de télécharger différents fichiers de firmware pour effectuer des mises à jour groupées, cela devrait être utile. Pour tout le monde, cela peut être une leçon pour prouver que nous sommes osxdaily sont des nerds qui passent trop de temps à penser à ce genre de choses.

Si vous voulez les essayer vous-même, copiez le bloc de syntaxe complet et collez-le dans la ligne de commande. Les commandes ont l'air brisées sur le Web, mais elles doivent être bien collées dans la ligne de commande en tant que chaîne de commande unique sur une seule ligne.

Obtenir une liste de tous les fichiers IPSW pour tous les appareils iOS

La chaîne de commande suivante renvoie une liste assez claire de littéralement tous les fichiers IPSW pour chaque périphérique iOS, iPad, iPhone, iPod, vous l'appelez, hébergé par les serveurs d'Apple:

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///g' | sed 's///g' | grep -v protected

Pour parcourir la syntaxe, curl accède à la liste "version" de l'URL du serveur d'Apple (c'est la même URL qui est frappée par iTunes quand il détecte qu'une mise à jour est disponible, soit dit en passant). Cette liste est ensuite passée à travers la commande grep pour correspondre à "ipsw" mais discount 'protected', sort -u s'assure que les éléments de la liste retournée est unique, et finalement, les résultats passent par 'sed' pour nettoyer un XML inutile à partir des résultats. L'exécution de cette commande vide tout dans la ligne de commande, vous pouvez la passer en "plus" pour la rendre plus lisible, ou peut-être préférable à certains utilisateurs de la rediriger dans un fichier texte comme ceci:

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///g' | sed 's///g'| grep -v protected > ~/Desktop/ipswlist.txt

Cela va tout vider dans un fichier texte nommé 'ipswlist.txt' sur le bureau.

Obtenez une liste de tous les fichiers iPhone IPSW à partir de la ligne de commande

Ne vous souciez pas des autres fichiers iOS et je veux juste une liste de l'iPhone IPSW? Utilisez grep pour iPhone et le reste de la commande reste le même:

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///g' | sed 's///g' | grep -v protected

Ajoutez "> ~ / Desktop / iPhoneIPSW.txt" à la fin pour envoyer les résultats à un fichier texte sur le bureau.

Récupérer une liste de tous les iPad IPSW disponibles sur les serveurs d'Apple

Similaire à l'utilisation de grep pour rechercher un iPhone, la spécification de «iPad» renvoie uniquement les fichiers de firmware iPad à la place:

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///g' | sed 's///g' | grep -v protected

Comme précédemment, vous pouvez l'envoyer dans un fichier texte si vous le souhaitez en ajoutant "> ~ / path / to / text.txt" à la fin.

Obtenir une liste de seulement une version iOS spécifique d'Apple

Similaire à la recherche de matériel iOS spécifique, vous pouvez également renvoyer des versions iOS spécifiques si vous le souhaitez. Par exemple, la syntaxe suivante retournera uniquement tous les résultats IPSW correspondant à iOS 7.0.4, notés par cette chaîne de version dans le second 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 | sort -u | sed 's///g' | sed 's///g' | grep -v protected | awk '{$1=$1}1'

Apple met rapidement à jour les mises à jour et, grâce au système Over-the-Air, la plupart des utilisateurs remarquent presque immédiatement les nouvelles mises à jour lorsqu'elles deviennent disponibles. Néanmoins, certains utilisateurs utilisent une variante de l'astuce ci-dessus pour surveiller les nouvelles versions d'iOS en interrogeant périodiquement les différentes chaînes de version qui n'existent pas encore sur les serveurs d'Apple. C'est un peu au-delà de la portée de cet article.

Il peut y avoir des façons plus propres et / ou mieux de faire cela, carillon dans les commentaires si vous avez une autre solution.