Skip to content

Instantly share code, notes, and snippets.

@optedoblivion
Created September 13, 2020 22:56
Show Gist options
  • Save optedoblivion/f04db3514c6849cc6580e7b5000a5a32 to your computer and use it in GitHub Desktop.
Save optedoblivion/f04db3514c6849cc6580e7b5000a5a32 to your computer and use it in GitHub Desktop.
Auto updating Minecraft Server
root@hwsrv-623932:~# crontab -l
## HOST ENTRIES
10 8 * * * /bin/bash /etc/hwautomate/hostwinds_backups.sh > /dev/null 2>&1
# Custom Entries
# Update minecraft to latest every morning at 4am
0 4 * * * /opt/minecraft/tools/update.sh
root@hwsrv-623932:~# cat /opt/minecraft/tools/update.sh
#!/bin/bash
systemctl stop minecraft.service
URL=$(/opt/minecraft/tools/get_latest_server_jar_url.py)
wget -O /opt/minecraft/server/server.jar.download $URL
if [ $? -eq 0 ]; then
cp /opt/minecraft/server/server.jar.download /opt/minecraft/server/server.jar
rm /opt/minecraft/server/server.jar.download
fi
systemctl start minecraft.service
root@hwsrv-623932:~# cat /opt/minecraft/tools/get_latest_server_jar_url.py
#!/usr/bin/env python
import requests
from requests.exceptions import HTTPError
try:
r = requests.get("https://launchermeta.mojang.com/mc/game/version_manifest.json")
r.raise_for_status()
json_response = r.json()
latest_version = json_response["latest"]["release"]
release = json_response["versions"][0]
if release["id"] == latest_version:
release_url = release["url"]
rr = requests.get(release_url)
rr.raise_for_status()
rr_json_response = rr.json()
download_url = rr_json_response["downloads"]["server"]["url"]
print (download_url)
# print(rr_json_response)
else:
print("First object isn't the latest release like normal!")
except HTTPError as http_error:
print("HTTP Error occurred: %s" % http_error)
except Exception as ex:
print("Other error occurred: %s" % ex)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment