2 votos

Consulta de actualización de los servidores de Apple mediante script?

¿Es posible tener un script o algún tipo de herramienta de línea de comandos que consulte los servidores de actualización de Apple para ver cuál es la última versión de un sistema operativo? Por ejemplo, me gustaría recibir una alerta en algún sitio cuando salga una nueva versión de iOS sin tener que consultar webs de noticias tecnológicas o directamente en mi iPhone, todo eso parece demasiado reactivo.

¿Quizás ya exista algo así? ¿Quizás sólo necesito entender mejor cómo los dispositivos hablan con Apple para saber si tienen una actualización disponible?

Gracias de antemano por su ayuda.

0 votos

¿Qué utilizarías para script esto? Apple publica páginas web en todas las actualizaciones, por lo que podría ver que el raspado de esas páginas o ver un feed de Twitter que ya raspa las páginas.

0 votos

Estaba pensando que sería posible enviar una solicitud a uno de los servidores de actualización. ¿Hay alguna cuenta de Twitter que ya lo haga?

2 votos

2voto

Apple tiene páginas debajo https://support.apple.com/en_US/downloads/ios para cada versión importante de iOS. Mirando Acerca de las actualizaciones de iOS 13 se puede ver un resumen de todas las versiones disponibles de iOS13.

enter image description here

En la fuente HTML se codifica como

<p><a href="#1341"><img alt="" src="/library/content/dam/edam/applecare/images/en_US/il/spacer.png" width="76">iOS 13.4.1<br>
 &nbsp;&nbsp;</a>
<p><a href="#135"><img alt="" src="/library/content/dam/edam/applecare/images/en_US/il/spacer.png" width="76">iOS 13.5<br>
 &nbsp;&nbsp;</a>
<p><a href="#1351"><img alt="" src="/library/content/dam/edam/applecare/images/en_US/il/spacer.png" width="76">iOS 13.5.1<br>
 &nbsp;&nbsp;</a>

Así que si usted está dispuesto a adaptar su script con cada versión importante de iOS/iPadOS podría utilizar

curl -s "https://support.apple.com/en-us/HT210393" | \
    sed -n '/\/library\/content/s|.*width="76">\([^<]*\)<.*|\1|p' | \
    tail -1

para obtener la versión más reciente disponible ( iOS 13.5.1 ahora mismo).

  • sed -n ejecuta sed suprimiendo cualquier salida de impresión a menos que se le indique específicamente
  • /\/library\/content/ aplica el siguiente comando a todas las líneas que coincidan /library/content
  • s|STRING-TO-MATCH|REPLACEMENT| realiza la sustitución de cadenas basada en patrones
  • .*width="76">\([^<]*\)<.* toma toda la línea y pone la parte entre width="76"> y lo siguiente < en \1
  • \1 simplemente sustituye toda la línea por el contenido de \1 (que en este caso es el número de versión)
  • p imprime el resultado en stdout

Obviamente, esto coincide (e imprime) todas las líneas (basta con omitir el carácter tail para comprobarlo), así que al final sólo tomamos la última línea.

Lo que cambia seguro con cada versión principal es la URL, lo que puede change es el código para encontrar y extraer el contenido relevante de la página. La dirección sed/tail combinación anterior funciona para iOS12 y iOS13 por lo menos.

PD: Puede evitar <code>tail</code> corriendo

curl -s https://support.apple.com/en-us/HT210393 | \
    sed -n '/\/library\/content/{s|.*width="76">\([^<]*\)<.*|\1|;h;}; ${g;p;}'

pero esto hace que sea difícil de leer para la mayoría de la gente :-)

1 votos

Gracias por la respuesta, @nohillside. Esto podría muy bien conseguirme lo que necesito. Le importaría tomar un momento para desglosar la expresión utilizada en el sed ¿Mando? No sólo quiero asegurarme de que puedo apoyar esto en el futuro por mi cuenta, pero tengo curiosidad por saber cómo fue capaz de averiguar esto.

1 votos

@bmkaiser ver editar

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X