【mclo.gs】サーバーのログファイルを簡単に共有する方法

マインクラフトでクラッシュした時やトラブルが起きた時に、簡単にクラッシュログやサーバーログなどのファイルを共有するやり方を紹介する記事です。

結論(時間のない人向け)

latest.logのところをログファイルへのパスに置き換えれば使えます。

Copy
curl -X POST -d "content=$(<latest.log)" https://api.mclo.gs/1/log

または

Copy
curl -X POST -d "content=$(cat latest.log)" https://api.mclo.gs/1/log

どうしてログファイルの共有を簡単にやりたかったのか

主に以下の理由です。

  • マイクラサーバー運営時、Ubuntuのままだとログが読みづらすぎる
  • MOD開発者に共有できない
  • 誰かに助けてもらうときにログファイルを渡すのが面倒

となり、「簡単にやる方法ないのかな…」となったのが発端です。

とりあえずチャレンジ

mclo.gsのAPIの仕様を見て、mclo.gsに直接ubuntuサーバーなどのターミナルからログを上げてみます。

(これは動きません...)

Copy
curl -X POST -F 'content=./latest.log' https://api.mclo.gs/1/log

これだとファイル名だけがログとして上がってしまいます。迷惑な話。

友人(Bing AI)に助けてもらった

どうやら、いい感じにやる方法があるらしく、二つほど教えてもらいました。

Bashのリダイレクトを使う方法

Copy
curl -X POST -d "content=$(<latest.log)" https://api.mclo.gs/1/log

Catコマンドを使う方法

Copy
curl -X POST -d "content=$(cat latest.log)" https://api.mclo.gs/1/log

おまけ

動いたは動いたのですが、Bashのリダイレクトを使う方法の中に出てくる

Copy
"content=$(<latest.log)"

はどんな動きをしているのか気になったのでおまけで調べてみました。

説明

  • $()
    • とほほのBash入門によると
    • $(...) または ... の中にコマンドを書くと、コマンドの出力が文字列として扱われます。

  • <

動きを考えてみる

  1. <を使用して、ファイルの中身を標準入力に渡す
  2. $()によって、content=の後に代入している

あとがき

今回、この記事を書いていて、「うーん…まだまだ、Bashに対する知識が少ないな:neko_thinking_nya:」と感じたので、サーバーを触ったりしていく中で、知識をつけていきたいなと思っています。

この記事は@sysnote8に手伝ってもらいました。お礼に全マシ二郎を奢る契約をしています。

役に立ったらコーヒーを注ごう

コーヒーを注ぐおんニャプロフィール画像

この記事が「役に立った!」と思ったら、筆者にコーヒー(300円)を注いであげましょう。きっと執筆の活力になります。
リクエストも受け付けています。やり方はこちら