GNU/Linux >> Linux の 問題 >  >> Linux

変更されない URL から最新のサーバー jar を取得する方法はありますか?

詳しい説明

私は最近、まさにこの理由でランチャーを逆コンパイルし、新しい命名規則でサーバー ラッパーの自動更新を管理しました。

現在のバージョンとその URL を調べるために彼らが使用しているファイルを見つけました:

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

このファイルには以下が含まれます (この回答の時点で):

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

そのファイルには「バージョン」配列もあります。これをループして、探しているバージョンを id で見つけます 分野。これは通常、この配列の最初のエントリでもあるため、versions[0] にアドレス指定できます。 . url をつかむ 値を取得し、次の便利なキーを含むファイルを取得します:

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

したがって、必要な URL は downloads.server.url に含まれています。 .

まとめ

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

時代遅れの指示 - 後世のみ

次に、このスキームを使用して、リリースとスナップショットの最新バージョンを推定するために使用できます:

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

この方法を使用すると、毎回 jar/exe ファイルをダウンロードする必要はなく、json ファイルだけをダウンロードするだけで、変更された場合は適切な jar を取得できます。


jsawk を使用できます Minecraft バージョンの JSON から最新の jar バージョン番号を取得するには:

#!/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

必須:

  • ジャソーク
  • SpiderMonkey

帽子もリングに投げ入れます!上記と非常によく似ていますが、いくつか追加があります。

#!/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. デフォルトのSSHサーバーのポート番号を変更する

  2. ずっとUTF-8

  3. mv が存在しない場合に、移動先のディレクトリを作成する方法はありますか?

  1. KVMサーバーを高速にセットアップする方法

  2. Linux で現在の rpath を検査する方法はありますか?

  3. bash で、最後の stdout をエコー/印刷する方法はありますか? stdout が割り当てられる変数はありますか?

  1. cPanelWebサーバーでホスト名を変更する方法

  2. サーバーのMySQLタイムアウトを変更する

  3. Unix で別のプロセスの環境変数を変更する方法はありますか?