マイクラ自動アップデートスクリプトについて

1年間ドタバタで記事の更新もなかった状態だが、
ちょうどFCマスターから「以下ツールを使っているがマイクラが起動しなくなった!!」と連絡があった。
最近ではマイクラサーバー運用から久しく外れているが、どれどれと覗いた。

Minecraft Bedrock Server Automatic Update for Linux
※README.md内はfor WindowsになっているけどLinuxです

見てみたところ結果としては以下点が障害になっていたわけで。

  1. ディスク容量が不足していた。(詳細割愛)
  2. 1に伴いスクリプト起動が複数回行われたことで(おそらく)MS側にBL登録されてダウンロード機能がはじかれた。

スクリプトの最新バージョン取得に関しては以下のような記述となっている。

RandNum=$(echo $((1 + $RANDOM % 5000)))

URL=`curl -H "Accept-Encoding: identity" -H "Accept-Language: en" -L -A "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.33 (KHTML, like Gecko) Chrome/90.0.$RandNum.212 Safari/537.33" https://minecraft.net/en-us/download/server/bedrock/ 2>/dev/null | grep bin-linux | sed -e 's/.*<a href=\"\(https:.*\/bin-linux\/.*\.zip\).*/\1/'`

(中略)

  # Get new bedrock server from web site
  wget -q ${URL}

このコードの肝ってダウンロードURLを取ってくるタイミングはUAをランダムでとってきているところ。
ただし実際にダウンロードしてくるところは本来のUAで設定されています。

今回原因1の兼ね合いもあってスクリプトを多数回起動させたことで締め出しを食らったことに。
なので対策としてwget側もランダムにしたUAにすることで解決を図った。

# Randomizer for user agent
RandNum=$(echo $((1 + $RANDOM % 5000)))
UA=$"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.33 (KHTML, like Gecko) Chrome/90.0.$RandNum.212 Safari/537.33"

URL=`curl -H "Accept-Encoding: identity" -H "Accept-Language: en" -L -A "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.33 (KHTML, like Gecko) Chrome/90.0.$RandNum.212 Safari/537.33" https://minecraft.net/en-us/download/server/bedrock/ 2>/dev/null | grep bin-linux | sed -e 's/.*<a href=\"\(https:.*\/bin-linux\/.*\.zip\).*/\1/'`

(中略)

  # Get new bedrock server from web site
  wget -q ${URL} --user-agent=${UA} -O ${DOWNLOAD}/${URL##*/}

ポイントとして、

  1. UAの変数用意。
  2. wget側にもUAを指定

これでダウンロードが動くようになった。
始めはTLSとか影響するのかなとか思ったがwgetの動きが、
HTTP による接続要求を送信しました。応答を待っています...
からうんともすんとも。ほかの方を見ると結果が返ってくるのに何も来なかったので解決までに時間はかかったけど結果単純にはじかれているだけだった。っていうオチ。

年始ソウソウ頑張ったのでFCマスターからお年玉くれるみたい (v'ω')v