Linuxでなにかしら処理を動かしていると、処理が終了した際にローカルのユーザにメールを送ってくることが多い(デフォルトでは/var/spool/mail/にファイルとして吐かれてる場合が多い(mbox形式))。 ちゃんとしたサーバだったら監視ツールとか入れたり、別途Slackにポストさせたり、ちゃんとメーリングリスト宛にメールを転送させるように設定したりしているけど、適当にCUIでキックした処理の終了連絡とか、cronで定期実行してる処理だとそこまでしてなかったりする。

で、そもそも最近はメールもあまり見ないし、Slackにはメールを受け付けてチャンネルにPOSTしてく...


Azureの昨日までの各サービスの利用料金をSlackに通知させる

前に、AWSでの各サービス利用料金通知Botを作ってたので、Azureについても作成してみた。 ソースはとりあえずこちらに配置している。

…正直、AWSに比べてえらい作りにくかった。 AWSの場合だと一発でJSONでデータとれるのだが、Azureは各サービスの利用データとその利用データごとのレート金額で分かれているので、データを取ってきたあとにマージしてやる必要があった。 あと、どうも日本リージョンのデータを取得する際にドルで取ってこれないようで、日本円で計算する必要があった。 為替の変動とかに影響受けそうなんだけど、どうなんだろう…?

この辺の情報はソースに直書きになっている...


OSSECでSlackへのアラート通知を行わせる

OSSECでは、アラート発生と同時に任意のコマンドを実行させることが可能だ。 これを利用して、リアルタイムでのファイル改ざんを検知したらSlackに通知させるよう設定することもできる。 この際、公式ですでにSlack用のスクリプトがすでに作成されているので、今回はこれを利用してやる。 バージョンによっては配置されていないかもしれないので、その場合は事前にwgetなりで取得しておこう。 (+スクリプト内で直接WebHookのURLとかユーザを変数で指定してるので、その辺も設定しておく。「SITE」がWebHookのURL。)

wget https://raw.githubuserco...

fail2banでアタックを検知したらSlackに通知させる

前回CentOS 7上でfail2banのインストール・設定を行ったが、アタックを検知して対象のIPアドレスをBANした際、メールではなくSlackに通知させることもできるようだ。 まず、事前にSlackのWebHookを作成しておく必要がある。

次に、actionとしてslackへのポストが行えるよう、設定ファイルを作成する。

/etc/fail2ban/action.d/slack.conf
[Definition] actionban = curl -X POST --data-urlencode 'payload={"channel": "#test", "use...

Vulsをキックして脆弱性の差分をSlackにポストさせるPythonスクリプト

脆弱性検知にVulsを使っているのだが、現時点ではまだ差分検知の機能が実装されておらず、cronなどでまわして新しい脆弱性が見つかったらその脆弱性だけをSlackにポストさせるようにするにはVuls単体だとまだできない状態。 そろそろ実装されると思っているのだが、その間の繋ぎとしてPythonでスクリプトを書いてやることにした。

間に合わせなのであまり綺麗には書いてない状態。

vuls_run.py
#!/usr/bin/env python # -*- coding: utf-8 -*- from os.path import join, relpath import os...

AWSの昨日までの各サービスの利用料金をSlackに通知させる

AWSで、昨日までの各サービス、アカウント全体での利用料金についてSlackでポストさせるようにしたかったので、とりあえずPythonで簡単なスクリプトを作ってみた。
Lambdaでやってもよかったのだが、手元にあるジョブサーバを使わないといかんという使命感の元普通にサーバ上で動くようにした。認証情報についても事前にexportしとけばいけるはずなのだが、とりあえずスクリプト内で記述するようにしてる。
利用料金についてCloudWatchに連携されている必要があるので、事前にCloudWatchへの連携をしておくこと。
ライブラリとしてboto3とSlackWebを使っている。


Pythonから「slackweb」を使ってWebHook経由でSlackにPostする

仕事で、適当な処理をしてSlackにポストするという処理が必要になったので、大した処理でもなかったのでPythonで記述することにした。
で、ほかの処理と出口を揃えたい+Attachmentでちょっとリッチな通知をしたかったので、簡単にWebHookに投げてポストさせられるよう『slack-python-webhook(slackweb)』を利用することにした。

以下、作成時のソースサンプル。

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import slackweb

# --- Slack Setting ---
SLACK_W...