- 現在利用している言語や技術の記法や不明点等を記録していく記事第五弾。
- 一時期個人的大流行していた「なんでもchatツール通知」の再燃の兆しが、行き来する生活。
- 今回は、久々のslack通知の復習ということで、Linuxのsshログインをslackへ通知するやり方を試用することにしよう。
概要
- Linux(例 : Amazon Linux2)へSSHで外部からログインした際に、「ログイン日時・ログイン者情報」等の情報を、slackへ通知するシェルスクリプト。
- ※MACでのSSHログイン通知は、こちらで確認できたため、参考にする。
結果
- 下記のように、MacからSSHでLinuxサーバーへアクセスした際に、slackへ指定情報付きで、通知。

環境
- Amazon Linux 2
- Mac OS X 10.13.4
- SSHでLinuxへ接続するため。
手順
Linuxサーバーの作成
-
- Macから、EC2で作成したLinuxサーバーへ、下記のコマンドで、ターミナルからSSHで接続する。
# Linuxへ外部接続
$ ssh -i ~/.ssh/鍵.pem ec2-user@グローバルIP
Last login: Sun Jul 21 08:36:14 2019 from XXXXXXXXXX.jp
__| __|_ )
_| ( / Amazon Linux 2 AMI
___|\___|___|
https://aws.amazon.com/amazon-linux-2/
-
- ログイン後、下記のコマンドで、Linux内に「.ssh」フォルダと「.ssh/rc」ファイルを作成する。
# lsコマンドで「.ssh」フォルダがあるか確認する。
[ec2-user@XXXX] $ ls -la
# 「.ssh」フォルダがなければ、作成
$ mkdir ~/.ssh
# 「.ssh」フォルダ内に、通知スクリプトファイルを作成する。
$ touch ~/.ssh/rc
Slack Incoming WebHooksの設定
- 下記の手順で、slack内の通知したいチャンネルにIncoming WebHooksのアプリを追加。
通知スクリプトの記述
- ターミナルへ戻り、Linuxサーバーの作成のステップの際に作成した、Linux上の「~/.ssh/rc」ファイルを下記の内容にする。
- ※sshで未接続の場合、再度EC2のLinuxへsshでログインする。
- ※ファイル編集は、vimを利用しているため、基本操作はこちらを参考にする。
~/.ssh/rc
# !/bin/bash
# Incomming Webhook URLの指定
url="https://hooks.slack.com/XXXXXXXX"
# slack表示内容の定義
now=`TZ=JST-9 date` # 日本時間形式指定
ip=`who | cut -d'(' -f2 | cut -d')' -f1 | sort | uniq -c | sort -rn` # ipへ整形
user=`w -hsi | awk '{print $1}'` # ユーザー名へ整形
readonly USER=`whoami` # 権限指定
readonly HOST=`hostname` # 権限指定
# slack通知形式指定
payload="payload={
\"attachments\": [
{
\"color\": \"#00ff7f\",
\"title\": \"SSH接続確認\",
\"fields\": [
{
\"title\": \"接続先情報\",
\"value\": \"${HOST}\",
\"short\": true
},
{
\"title\": \"日時\",
\"value\": \"${now}\",
\"short\": true
},
{
\"title\": \"ユーザー名\",
\"value\": \"${user}\",
\"short\": true
},
{
\"title\": \"IP\",
\"value\": \"${ip}\",
\"short\": true
}
]
}
]
}"
# データのURL変換後、送信。
curl -m 5 --data-urlencode "${payload}" "${url}" > /dev/null 2>&1
- 上記の内容の4行目の、「Incomming Webhook」のURLをSlack Incoming WebHooksの設定のステップの際にメモしたURLへ修正する。
- 修正後、保存して、下記のコマンドで、スクリプトファイルを読み込む。
$ source ~/.ssh/rc
- 上記を実行後、slackへ下記のようなメッセージが通知されることを確認。

- ssh接続通知確認のため、一度再接続して、同様にメッセージが通知されることを確認したら完了。
まとめ
- 今回は、slack通知の復習ということで、久々のslack通知が届いた歓喜の瞬間に、静寂を強制された空間にいたことを後悔しながら、記事を書く。
- 「賢人達の大量のサンプルプログラムに心から感謝」という思いを、「賢人依存の継続」と同時に抱く。
- サーバー接続・管理系ツールへの興味が湧いた私は、次なる賢人情報の調査をすることにしよう。
参考
-
https://qiita.com/aoya6i/items/a496e4bf158177e263fc
→こちらの記事を参考にしました。大変お世話になりました。 -
https://toripiyo.hatenablog.com/entry/2017/06/03/175300
→こちらの記事を参考にしました。大変お世話になりました。