GNU/Linux >> Tutoriels Linux >  >> Linux

Existe-t-il un moyen d'obtenir le dernier fichier jar du serveur via une URL qui ne change pas ?

Instructions complètes

J'ai récemment décompilé le lanceur pour cette raison, afin de gérer les mises à jour automatiques de mon wrapper de serveur avec leur nouvelle convention de nommage.

J'ai trouvé le fichier qu'ils utilisent pour déterminer la version actuelle et son URL :

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

Ce fichier comprend les éléments suivants (à partir de cette réponse) :

"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"
    },
    ...
]

Ce fichier a également un tableau "versions". Faites une boucle pour trouver la version que vous recherchez dans le id champ. C'est aussi généralement la première entrée de ce tableau, vous pouvez donc l'adresser versions[0] . Prenez le url value et récupérez ce fichier qui contient la clé utile suivante :

"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"
    }
},

Par conséquent, l'URL dont vous avez besoin est contenue dans downloads.server.url .

Résumé

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

Instructions obsolètes - pour la postérité uniquement

Que vous pouvez ensuite utiliser pour extrapoler la dernière version pour la version et les instantanés en utilisant ce schéma :

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

En utilisant cette méthode, vous n'avez pas besoin de télécharger le fichier jar/exe à chaque fois, juste le fichier json, puis s'il est modifié, vous pouvez récupérer le fichier jar approprié.


Vous pouvez utiliser jsawk pour extraire le dernier numéro de version jar de la version 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

Nécessite :

  • jsawk
  • SpiderMonkey

Je vais même jeter mon chapeau dans le ring ! Très similaire à ci-dessus, avec quelques 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. Comment configurer rapidement un serveur KVM

  2. Comment changer le nom d'hôte sur un serveur Web cPanel

  3. Modifier le numéro de port du serveur SSH par défaut

  4. Modifier le délai d'attente MySQL sur un serveur

  5. Existe-t-il un moyen de modifier les variables d'environnement d'un autre processus sous Unix ?

Comment changer le nom d'hôte du serveur dans Ubuntu

HTTP vs HTTPS :quelle est la différence ?

Comment changer le fuseau horaire sur le serveur Ubuntu 18.04 ?

Existe-t-il un moyen d'inspecter le rpath actuel sous Linux ?

La commande 'ls -d' n'affiche pas les répertoires. Existe-t-il un moyen d'obtenir que 'ls' affiche uniquement les répertoires au lieu des fichiers et des répertoires?

Quelle est la meilleure façon d'apprendre SELinux ?