GNU/Linux >> Linux Esercitazione >  >> Linux

C'è un modo per ottenere l'ultimo jar del server tramite un URL che non cambia?

Istruzioni complete

Di recente ho decompilato il launcher proprio per questo motivo, per gestire gli aggiornamenti automatici per il mio wrapper del server con la loro nuova convenzione di denominazione.

Ho trovato il file che usano per capire qual è la versione attuale e l'URL:

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

Questo file include quanto segue (a partire da questa risposta):

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

Quel file ha anche un array "versioni". Passa attraverso questo per trovare la versione che stai cercando in id campo. Di solito è anche la prima voce in questo array, quindi potresti indirizzarla versions[0] . Prendi il url value e recupera quel file che contiene la seguente utile chiave:

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

Pertanto, l'URL di cui hai bisogno è contenuto in downloads.server.url .

Riepilogo

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

Istruzioni obsolete - solo per i posteri

Che puoi quindi utilizzare per estrapolare l'ultima versione per il rilascio e le istantanee utilizzando questo schema:

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

Usando questo metodo non è necessario scaricare ogni volta il file jar/exe, solo il file json e poi, se è cambiato, puoi prendere il jar appropriato.


Puoi usare jsawk per estrarre l'ultimo numero di versione jar dalla versione JSON di 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

Richiede:

  • jsawk
  • Scimmia Ragno

Getterò persino il mio cappello sul ring! Molto simile a sopra, con alcuni extra.

#!/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. UTF-8 fino in fondo

  2. C'è un modo per ottenere da gcc l'output binario grezzo?

  3. In bash, c'è un modo per echo/stampare l'ultimo stdout? Esiste una variabile a cui è assegnato stdout?

  4. Il comando 'ls -d' non visualizza le directory. C'è un modo per fare in modo che "ls" visualizzi solo le directory invece di file e directory?

  5. C'è un modo per modificare l'ID volume di un file .iso dalla riga di comando?

Modificare il numero di porta del server SSH predefinito

Come modificare il nome host del server in Ubuntu

HTTP e HTTPS:qual è la differenza?

Come modificare il fuso orario su Ubuntu 18.04 Server?

Qual è il modo migliore per imparare SELinux?

C'è un modo rapido per ottenere l'ultimo file in un TAR di grandi dimensioni?