sshログインしたときに、slack通知する

以前、Slack 通知を Node.js でもやってみるという記事を書きました。
ssh ログイン時に slack 通知するという記事を見かけたのですが、書かれた時期がやや古いものでした。

2020 年版 「ssh ログインした時、 slack に通知してみる」記事です。

目次

参考

動作環境

  • CentOS Linux release 7.7.1908 (Core)
  • v6.17.1(ローカル)
  • v12.12.0(nodenv)

実装

準備

Webhook URL が必要です。
Rails から Slack に通知してみるに方法の記載があるので、そちらを参照してください。

ひな形作成

適当なディレクトリで以下を実行し準備します。

1
npm init -y

パッケージ導入

1
npm install --save npm install @slack/webhook

通知クライアント実装

ssh_logon_slack.js
1
2
3
4
5
6
7
8
9
10
const { IncomingWebhook } = require("@slack/webhook");

const webhook = new IncomingWebhook("Webhook URL");

(async () => {
await webhook.send({
username: "login infomation",
text: "ssh login",
});
})();

確認

一旦、以下のコマンドで実行します。

1
2
3
4
5
[root@localhost logon_slack]# ls
ssh_logon_slack.js node_modules package-lock.json package.json
[root@localhost logon_slack]# node -v
v12.6.0
node ssh_logon_slack.js

実行すると、次のように slack に通知されます。

ssh ログイン時に実行させる

ssh ログイン時に実行させるため、.bash_profileからssh_logon_slack.jsを呼び出すようにします。
以下のように追記します。

.bash_profile(追記)
1
2
3
#login時にslack通知
cd logon_slack && node ssh_logon_slack.js
cd ~

先の方法では、ディレクトリ移動してから実行し、ホームディレクトリへ戻るようになっています。
これは、nodenv で指定した node(v12.12.0)を使用できるようにしたかったからです。

ssh ログイン時に実行させる 2

先の方法では、nodenv で指定した node(v12.12.0)を使いましたが、ローカルにインストールした node(v6.17.1)でも実行可能でした。
なので、ディレクトリ移動せず、以下の記述で実行可能でした。

.bash_profile(追記)
1
2
#login時にslack通知
node ./logon_slack/ssh_logon_slack.js

ssh でログインして確認

ssh クライアントを使って設定したサーバにログインします。
ログインすると、先に確認したのと同様に slack に通知が出ます。


今回は、ssh ログインした時 slack 通知するようにしました。
slack からの通知でほかにもできることを考えたいところです。

ではでは。