Fråga:
Finns det ett sätt att få den senaste serverburken genom en URL som inte ändras?
Seriouslysean
2013-07-08 23:15:55 UTC
view on stackexchange narkive permalink

Jag skriver ett bash-skript för att hantera en vaniljserverinstallation på min eeePC. Just nu har jag använt http://s3.amazonaws.com/MinecraftDownload/launcher/minecraft_server.jar för att få minecraft_server-burken. Det verkar bara vara att få 1.5.2-serverversionen istället för 1.6.2-serverversionen.

Några idéer för hur jag kan ta den senaste stabila versionen via en liknande webbadress?

Mojang flyttar sin infrastruktur för att göra det möjligt för flera versioner att vara lättillgängliga i den nya startprogrammet, så det ser ut som om deras webbadressschema ändras för att stödja det medan de lämnar webbadresserna före 1.6 intakta. Du kan behöva analysera en uppdateringsspårnings-URL nu för att hitta den senaste webbadressen för stabil release. (Allt bara utbildad gissning tills jag kan komma tillbaka till min installation och titta på vad den nya startprogrammet gör för att dra klientuppdateringar och se om det översätts till server jar-URL: er.)
Tack för informationen! Jag har jobbat lite på egen hand, men inget att visa för det ännu. Jag meddelar dig om jag hittar något.
Elva svar:
Richard Benson
2013-07-10 22:29:35 UTC
view on stackexchange narkive permalink

Fullständiga instruktioner

Jag dekompilerade nyligen startprogrammet av just denna anledning för att hantera automatiska uppdateringar för min serveromslag med deras nya namnkonvention.

Jag hittade filen de använder för ta reda på vad den aktuella versionen är och webbadressen till den:

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

Den här filen innehåller följande (från och med detta svar):

  "senaste": {"ögonblicksbild": "1.9-pre3", "release": "1.8.9"}, " versioner ": [{" 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"}, ...]  

Den filen har också en "versioner" -matris. Sök igenom detta för att hitta den version du letar efter i fältet id . Det är också vanligtvis den första posten i denna matris, så du kan adressera den versionerna [0] . Ta tag i url -värdet och hämta den filen som innehåller följande användbara nyckel:

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

Därför finns den webbadress du behöver i downloads.server.url.

Sammanfattning


Föråldrade instruktioner - endast för eftertiden

Som du sedan kan använda för att extrapolera den senaste versionen för release och snapshots med det här schemat:

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

Med den här metoden behöver du inte ladda ner jar / exe-filen varje gång, bara json-filen och sedan om den ändras , du kan ta en lämplig burk.

+64 för bästa möjliga svar!
Det här är exakt den typ av saker som jag förväntade mig att existera. Bra jobbat!
EXAKT vad jag letade efter, tack så mycket!
FEL 403: Förbjudet
AccessDeniedAccess DeniedBDFFB0CBC19A9EFDhTsBwKk0fJ + SFOQ6nqEVBqIMhOSQxttXnxfOOXnWtAPnbT9pgpgDWNHTVQeSt + 3xIqG6MeWbl0g = https://s3.amazonowns/Min/solutions.1
@AaronFranke ser ut som om det nyligen har ändrats och är något mer involverat.Jag ska försöka ändra svaret.
Jason Cox
2013-07-11 08:37:48 UTC
view on stackexchange narkive permalink

Du kan använda jsawk för att hämta det senaste burkversionens nummer från Minecraft-versionen JSON:

  #! / bin / bashVER = `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

Kräver:

Vad krävs SpiderMonkey för?
jsawk använder SpiderMonkey (js tolk) - här är mer info: https://github.com/micha/jsawk
jsawk ser cool ut, var kan jag få det här för Windows?
cptskyhawk
2013-11-05 05:18:42 UTC
view on stackexchange narkive permalink

Jag slänger till och med min hatt i ringen! Mycket lik ovan, med några extra.

  #! / Bin / bashtmpfile = / tmp / minecrafttempfile.tmpdownloadurl = "https://minecraft.net/download" serverurl = "" loc = $ ([[-n $ 1]] && echo $ 1 || echo "/tmp/minecraft_server.jar")if [[-a $ loc]]; sedan eko "$ loc existerar - flyttar till $ {loc} .old" mv $ loc $ {loc} .oldfiecho "Grabbing minecraft download page ..." curl $ downloadurl > $ tmpfileecho "Få nedladdnings-URL för minecraft-server .. . "serverurl =` egrep -io 'https. * versioner \ / (. *) \ / minecraft_server. \ 1.jar' $ tmpfile`echo "URL =" $ serverurlecho "Hämtar serverburk ..." wget -q - O $ loc $ serverurl  

https://github.com/cptskyhawk/LinuxMinecraftTools

Wolf5
2013-07-10 03:58:48 UTC
view on stackexchange narkive permalink

Jag har en serverinställning som uppdateras varje natt med ett kommando webget.exe tidigare. Ändringen fick mig att skapa ett program som skrapar nedladdningssidan efter en * server.exe och laddar ner den som minecraft_server.exe.

Jag har modifierat den för att ta in en param "jar" så att den blir * server.jar istället och laddar ner det som minecraft_server.jar.

Den zippade exe finns här: http://halsvik.net/downloads/GetLatestMinecraftServer.zip

Om du laddar ner programmet, kör det utan parametrar: GetLatestMinecraftServer.exe

Om du vill att jar-serverfilen istället använder: GetLatestMinecraftServer.exe jar

Källkoden är den här:

  statiskt tomrum Huvud (sträng [] args) {försök {var ext = ".exe"; if (args.Length > 0) {ext = "." + args [0]; } var wc = nytt System.Net.WebClient (); var url = "http://minecraft.net/download"; var data = wc.DownloadData (url); var page = Encoding.UTF8.GetString (data); var länkar = Miscc.GetStringsBetween (sida, "<a href = \" "," \ ""); // Anpassad metod för att få matchningar bool match = false; foreach (var objekt i länkar) {if (item.ToLower (). Innehåller ("server") && item.ToLower (). Innehåller (ext)) {var filnamn = "minecraft_server" + ext; var fn = Path.GetFullPath (filnamn); medan (File.Exists (filnamn + ".old")) File.Delete (filnamn + ".old"); om (File.Exists (fn)) File.Move (fn, fn + ".old"); prova {var comp = false; wc.DownloadProgressChanged + = (o, e) = > {Console.Write ("#"); // Ange att något hämtas};
wc.DownloadFileCompleted + = (o, e) = > {comp = true; }; wc.DownloadFileAsync (ny Uri (objekt), filnamn); // Vänta tills nedladdningen är klar medan (! Comp) {Console.Write ("."); // Ange tiden går Thread.Sleep (1000); }} fångst (Undantag ex) {Console.WriteLine ("Nedladdning av" + objekt + "misslyckades." + ex.Meddelande); lämna tillbaka; } Console.WriteLine ("Ladda ner OK"); match = true; ha sönder; }} if (! match) {Console.WriteLine ("Det gick inte att hitta minecraft-servern på http://minecraft.net/download"); }} fångst (Undantag ex) {Console.WriteLine ("Något misslyckades." + ex.ToString ()); }}  
Tyvärr kör jag min server på en Linux-låda, men jag har bestämt mig för att närma mig den med en liknande lösning. Tack så mycket för att du tog dig tid att skriva upp detta!
Spongman
2013-08-20 09:40:17 UTC
view on stackexchange narkive permalink

här är min hemska sed-version.

mindre korrekt än Jasons version ovan. men färre beroenden.

  #! / bin / bashwget -qN https://launchermeta.mojang.com/mc/game/version_manifest.jsonMCVER=`sed -n -e '/ \ " senaste \ "/, /} / s /.* \" ögonblicksbild \ ": \" \ ([^ \ "] * \) \". * / \ 1 / p '< version_manifest.json`wget -N https: //s3.amazonaws.com/Minecraft.Download/versions/$MCVER/minecraft_server.$MCVER.jar  
Det här är den typ av manus som jag slutade skriva! Tack för att du tog dig tid att lägga till detta i min fråga, det är verkligen användbart.
Zuntaruk
2017-12-25 10:16:47 UTC
view on stackexchange narkive permalink

För de som tittar på detta har jag också hittat ett sätt att använda grep istället för sed för att dra ut versionen med följande:

grep -oP "\" release \ ": \" \ K \ d {1,2} \. \ d {1,2} \. \ d {1,2} "version_manifest.json kod>

Filen hämtas från exemplen ovan.

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

Personligen tyckte jag att ovanstående grep-kommando var lite renare.

jones77
2020-01-19 01:32:08 UTC
view on stackexchange narkive permalink

Följande bash-skript använder jq & curl till:

  • ladda ner filen med manifestversioner
  • extrahera webbadressen till det senaste manifestet
  • ladda ner det senaste manifestet
  • extrahera webbadressen till serverburken
  • ladda ner server.jar till minecraft_server.$version.jar
  • symboliskt länka server.jar till minecraft_server.$version.jar

Använd den i kombination med ett minecraft-startskript som använder server.jar symbolisk länk.

  #! / usr / bin / env bash
#
set -o errexit

förklara -r version_manifest_url = "\
https://launchermeta.mojang.com/mc/game/version_manifest.json "
förklara -r tmp = "/ tmp / version_manifest.json"

# Hitta nedladdnings-URL för senaste versionen.
senaste_version = $ (curl -Ss -o "$ tmp" "$ version_manifest_url" \
    && jq .latest.release -r "$ tmp")
senaste_manifest_url = $ (katt "$ tmp" | jq -r ".versioner [] \
    | välj (innehåller ({type: \ "release \", id: \ "$ latest_version \"})) \
    | .url ")

# Ladda bara ned den senaste versionen om målfilnamnet inte finns.
deklarera -r manifest = "/ tmp / manifest. $ senaste_version.json"
curl -Ss -o "$ manifest" "$ latest_manifest_url"

förklara -r jar_url = $ (jq -r ".downloads.server.url" "$ manifest")

echo "senaste version: $ latest_version"
eko "manifest url: $ latest_manifest_url"
eko "nedladdnings url: $ jar_url"

förklara -r jar = "minecraft_server. $ latest_version.jar"
curl -Ss -o "$ jar" "$ jar_url"

# Symboliskt server.jar-länk till den senaste versionen.
förklara -r symlink = "server.jar"
rm -f "$ symlink"
ln -s "$ jar" "$ symlink"

 
Louhbo
2019-04-24 23:39:02 UTC
view on stackexchange narkive permalink

Det här är min aning om det.

  #! / bin / bash

#Rengör gamla filer

rm / minecraft / temp / *

# Hämta version_manifest-filen från Mojang

wget -P / minecraft / temp https://launchermeta.mojang.com/mc/game/version_manifest.json

#Parse version- och version.json-filerna i variabler

URL = $ (jq -r '.versioner [0] .url' / minecraft / temp / version_manifest.json)
VER = $ (jq -r '.versioner [0] .id' /minecraft/temp/version_manifest.json)

#Ger den versionsspecifika json-filen till analys

wget -P / minecraft / temp "$ URL"

# Lägg till .json i slutet av versionen för att analysera json-filen

VER2 = "$ VER.json"

#Parse version.json-filen för att hämta webbadress för serverhämtning

SERVERURL = $ (jq -r '.downloads.server.url' / minecraft / temp / $ VER2)

# Ladda ner server.jar-filen

wget -P / minecraft / temp $ SERVERURL

# Säkerhetskopiera den gamla minecraft_server.jar-filen

mv /minecraft/minecraft_server.jar /minecraft/minecraft_server.jar.old

# Flytta den nedladdade serverfilen till minecraft_server.jar-filen i minecraft-katalogen

mv /minecraft/temp/server.jar /minecraft/minecraft_server.jar

eko "Minecraft uppgraderat till version $ VER"
 
Vincent Le Dû
2020-03-03 16:15:41 UTC
view on stackexchange narkive permalink

Min 50ct till den här gamla tråden. Mitt mål:

  • undvik beroenden
  • gör det enkelt

Mina tre rader för att ladda ner den senaste ögonblicksbilden:

  #! / bin / bash
MC_VERSION_URLS = $ (curl -s https://launchermeta.mojang.com/mc/game/version_manifest.json | python -c 'import json, sys, base64; obj = json.load (sys.stdin); print obj ["versioner"] [0] ["url"] ')

MC_LATEST_SNAPSHOT = $ (curl -s $ MC_VERSION_URLS | python -c 'importera json, sys, base64; obj = json.load (sys.stdin); skriv obj ["nedladdningar"] ["server"] ["url"]')

wget $ MC_LATEST_SNAPSHOT
 
Michael Reilly
2020-03-27 22:23:49 UTC
view on stackexchange narkive permalink

Detta fungerar för berggrunden, modifiera för Java Ed:

  url = $ (curl https://www.minecraft.net/en-us/download/server/bedrock/ | grep "linux / berggrundsserver-" | egrep -o 'https?: // [^ "] + ')

echo $ url
 

Den skickar webbadressen till den senaste versionen.

Perth
2017-02-28 09:14:55 UTC
view on stackexchange narkive permalink

Tog det lysande svaret från Richard Benson och sprang vild. https://github.com/sc-perth/BashScripts/blob/master/minecraft_updater.sh Testat att arbeta med min DigitalOcean Ubuntu 16.04-instans.Tack Richard!

Skriptet kontrollerar som standard om du använder den senaste versionen och meddelar dig.Det kommer också att ladda ner det om du anger argumentet -d | --download.Det kommer också att installera uppdateringen om du ändrar skriptet så att det passar din miljö & aktivera den här funktionen.Det kommer också att göra samma sak för alla versioner du anger, efter att ha validerat versionen.Fungerar inte för ögonblicksbilder, bara för utgåvor.

OBEROENDE:

jq, wget Dessa kan behöva installeras, resten har du förmodligen.

bash, (e) grep, basnamn, dirname, chown, chmod, tar w / gzip, find, printf



Denna fråga och svar översattes automatiskt från det engelska språket.Det ursprungliga innehållet finns tillgängligt på stackexchange, vilket vi tackar för cc by-sa 3.0-licensen som det distribueras under.
Loading...