Snuggledash icon

minecraft-upgrade.sh

Snuggledash | PRO | 06/04/20 06:33:49 PM UTC | 0 ⭐ | 11312 👁️ | Never ⏰ | []
Bash |

1.83 KB

|

None

|

0 👍

/

0 👎

#!/bin/bash
set -e
 
# Benutzer des Minecraft-Servers
TARGET_USER=minecraft
# Heimverzeichnis des Minecraft-Servers
TARGET_DIR=/srv/minecraft
# Dateiname mit Platzhalter für Download
FILENAME_TEMPLATE=minecraft_server.%s.jar
# Dateiname eines symbolischen Links, der auf die heruntergeladene Datei zeigt
SYMLINK_NAME=server.jar
# Manifest-Dokument, das Informationen über alle Minecraft-Versionen enthält
MANIFEST_URL="https://launchermeta.mojang.com/mc/game/version_manifest.json"
 
# Skript nimmt gewünschte Minecraft-Version als Parameter, ansonsten aktuelle stabile Version
VERSION="${1:-latest}"
 
target_group="$(id -gn "$TARGET_USER")"
running_as="$(id -un)"
manifest_versions="$(basename "$MANIFEST_URL")"
manifest=manifest.json
 
[ -d "$TARGET_DIR" ]
working_dir="$(mktemp -d)"
trap 'rm -rf "$working_dir"' EXIT
cd "$working_dir"
 
curl -so "$manifest_versions" "$MANIFEST_URL"
if [ "$VERSION" = "latest" ]; then
        VERSION="$(jq -er '.latest.release' "$manifest_versions")"
fi
manifest_version_url="$(jq -er '.versions[] | select(.id=="'"$VERSION"'") | .url' "$manifest_versions")"
curl -so "$manifest" "$manifest_version_url"
download_sha1="$(jq -er '.downloads.server.sha1' "$manifest")"
download_url="$(jq -er '.downloads.server.url' "$manifest")"
 
target_filename="$(printf "$FILENAME_TEMPLATE" "$VERSION")"
target_file="$TARGET_DIR/$target_filename"
curl -o "$target_file" "$download_url"
echo "$download_sha1  $target_filename" | (cd "$TARGET_DIR"; sha1sum -c)
if [ "$running_as" != "$TARGET_USER" ]; then
        chown "$TARGET_USER:$target_group" "$target_file"
fi
 
if [ "$SYMLINK_NAME" ]; then
        ln -fs "$target_filename" "$TARGET_DIR/$SYMLINK_NAME"
        if [ "$running_as" != "$TARGET_USER" ]; then
                chown -h "$TARGET_USER:$target_group" "$TARGET_DIR/$SYMLINK_NAME"
        fi
fi

Comments