GNU/Linux >> Tutoriales Linux >  >> Linux

¿Hay alguna manera de obtener el archivo jar del servidor más reciente a través de una URL que no cambia?

Instrucciones completas

Recientemente descompilé el iniciador por este mismo motivo, para administrar las actualizaciones automáticas para mi contenedor de servidor con su nueva convención de nomenclatura.

Encontré el archivo que usan para averiguar cuál es la versión actual y la URL:

https://launchermeta.mojang.com/mc/game/version_manifest.json

Este archivo incluye lo siguiente (a partir de esta respuesta):

"latest": {
    "snapshot": "1.9-pre3",
    "release": "1.8.9"
},
"versions": [
    {
        "id": "1.13.1",
        "type": "release",
        "url": "https://launchermeta.mojang.com/v1/packages/c0f1e6239a16681ffbfa68fc469038643304d5a9/1.13.1.json",
        "time": "2018-08-30T09:49:34+00:00",
        "releaseTime": "2018-08-22T14:03:42+00:00"
    },
    ...
]

Ese archivo también tiene una matriz de "versiones". Recorra esto para encontrar la versión que está buscando en el id campo. También suele ser la primera entrada en esta matriz, por lo que podría abordarla versions[0] . Toma el url value y obtenga ese archivo que contiene la siguiente clave útil:

"downloads": {
    "client": {
        "sha1": "8de235e5ec3a7fce168056ea395d21cbdec18d7c",
        "size": 16088559,
        "url": "https://launcher.mojang.com/v1/objects/8de235e5ec3a7fce168056ea395d21cbdec18d7c/client.jar"
    },
    "server": {
        "sha1": "fe123682e9cb30031eae351764f653500b7396c9",
        "size": 33832589,
        "url": "https://launcher.mojang.com/v1/objects/fe123682e9cb30031eae351764f653500b7396c9/server.jar"
    }
},

Por lo tanto, la URL que necesita está contenida en downloads.server.url .

Resumen

  • GET https://launchermeta.mojang.com/mc/game/version_manifest.json
  • GET versions[0].url
  • GET downloads.server.url

Instrucciones obsoletas:solo para la posteridad

Que luego puede usar para extrapolar la última versión para el lanzamiento y las instantáneas usando este esquema:

https://s3.amazonaws.com/Minecraft.Download/versions/" + Ver + "/minecraft_server." + Ver + ".jar

Con este método, no necesita descargar el archivo jar/exe cada vez, solo el archivo json y luego, si se modifica, puede tomar el archivo jar apropiado.


Puedes usar jsawk para obtener el último número de versión de jar de la versión JSON de Minecraft:

#!/bin/bash
VER=`curl -s https://launchermeta.mojang.com/mc/game/version_manifest.json | jsawk -n 'out(this.latest.release)'`
wget https://s3.amazonaws.com/Minecraft.Download/versions/$VER/minecraft_server.$VER.jar

Requiere:

  • jsawk
  • Mono Araña

¡Hasta arrojaré mi sombrero al ring! Muy similar al anterior, con algunos extras.

#!/bin/bash

tmpfile=/tmp/minecrafttempfile.tmp
downloadurl="https://minecraft.net/download"
serverurl=""
loc=$([[ -n $1 ]] && echo $1 || echo "/tmp/minecraft_server.jar")

if [[ -a $loc ]]; then
        echo "$loc exists -- moving to ${loc}.old"
        mv $loc ${loc}.old
fi

echo "Grabbing minecraft download page..."

curl $downloadurl > $tmpfile

echo "Getting download URL for minecraft server..."

serverurl=`egrep -io 'https.*versions\/(.*)\/minecraft_server.\1.jar' $tmpfile`

echo "URL = "$serverurl

echo "Downloading server jar..."

wget -q -O $loc $serverurl

https://github.com/cptskyhawk/LinuxMinecraftTools


Linux
  1. Cambiar el tiempo de espera de MySQL en un servidor

  2. ¿Hay alguna forma de cambiar las variables de entorno de otro proceso en Unix?

  3. ¿Hay alguna manera de inspeccionar el rpath actual en Linux?

  4. En bash, ¿hay alguna forma de repetir/imprimir la última salida estándar? ¿Hay alguna variable a la que esté asignada la salida estándar?

  5. El comando 'ls -d' no muestra directorios. ¿Hay alguna manera de hacer que 'ls' solo muestre directorios en lugar de archivos y directorios?

Cómo cambiar el nombre de host del servidor en Ubuntu

HTTP vs HTTPS:¿Cuál es la diferencia?

¿Cómo cambiar la zona horaria en Ubuntu 18.04 Server?

Linux:¿hay alguna forma de identificar la velocidad de su memoria a través del software?

¿Hay alguna manera de cambiar una identificación de volumen de archivos .iso desde la línea de comando?

¿Cuál es la mejor manera de aprender SELinux?