tron-Factory 業務日誌

業務もしていなければ日誌でもない。

Simutransサーバーからログイン情報をSlackに投稿

以前KMC内でNetSimutransをやっていたとき、ログインするとSlackに情報が流れるようになっていた。

gyazo.com

今回のプレイでもやりたいと思い、前回のサーバー管理者だった id:nonylene さんにコードを教えてもらった。

 

#! /bin/bash

/bin/journalctl --machine simutrans -f | /bin/grep Welcome --line-buffered | /bin/sed -ue 's/.*\(Welcome, .*\!\) .*/\1/g' | /usr/bin/xargs -I{} /bin/bash -c "/bin/echo {} | /usr/bin/jq -Rnc --unbuffered '{ text: input }' | /usr/bin/curl -X POST -d @- https://hooks.slack.com/services/hogehoge/piyopiyo"

 で、これを使ってやってみたのだが、うまくいかない。

 

(改行コードとかそういう問題を除けば)問題点は2つあった。

 1.debugオプション

journalct -fしてみれば一目瞭然、"Welcome,hogehoge!"がログに流れていなかった。debugオプションなしでやってるからだと気づき、色々試したところ、-debug 2以上でないとこのメッセージはログに流れないらしいので、-debug 2で起動することにする。

 2,jq

/usr/bin/jqがないぞ!と怒られたので調べてみると、jqとはJSONを扱うのに使うソフトだった。インストール。

 

これで以下のようにログイン情報が流れるようになった。

gyazo.com

ちなみに上のも下のも2回同じログが流れているが、これはSimutransが2回同じメッセージを流してくることによる仕様である。うまくやれば回避できるかもしれないが、回避する必要も特にないので放置。