Simutransサーバーからログイン情報をSlackに投稿
以前KMC内でNetSimutransをやっていたとき、ログインするとSlackに情報が流れるようになっていた。
今回のプレイでもやりたいと思い、前回のサーバー管理者だった 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を扱うのに使うソフトだった。インストール。
これで以下のようにログイン情報が流れるようになった。
ちなみに上のも下のも2回同じログが流れているが、これはSimutransが2回同じメッセージを流してくることによる仕様である。うまくやれば回避できるかもしれないが、回避する必要も特にないので放置。