LoginSignup
26
26

More than 5 years have passed since last update.

【個人メモ】sshでマシンにログインしたらidobataに通知する

Posted at

sshを利用してマシンにログインしたことをidobataで通知したい

誰かがsshを利用してマシンにログインした時、
idobataにメッセージを流すとと楽だよな〜ということで
どうすりゃいいんだっけ、って調べてみた。

sshrcを利用する

sshrcというファイルにスクリプトを書き込むと、
sshログインが行われた際にsshrcに書いたスクリプトが実行される。

/etc/ssh/sshrcファイルを作成し、
idobataにメッセージを送るためのスクリプトを実行するようにする。

/etc/ssh/sshrc
/etc/ssh/rc.d/notify_to_idobata.sh &

...実行ファイルについては、
/etc/ssh/rc.d/notify_to_idobata.shとして作った。
{{ hook_id }} のところは、適宜idobataのhook idに変えること。

/etc/ssh/rc.d/notify_to_idobata.sh
badge="source=<span class='label label-success'>ログインしました</span>"
br="<br/>"
message="<b>$(id -nu) $(date +'%Y-%m-%d %H:%M:%S %Z')</b>"

curl \
  --data-urlencode "$badge$br$message" \
  -d format=html \
  https://idobata.io/hook/{{ hook_id }}

実際にログインして通知されるか確認する

今回はvagrantを使って立ちあげたVirtual box上の
ゲストマシンに対してsshrcの設定を行った。

vagrant ssh コマンドを実行して、
ゲストマシンにログインする。

スクリーンショット 2014-05-03 15.59.08.png

無事ログインできたので、
idobataにログとして投げられているか確認する。

スクリーンショット 2014-05-03 16.00.21.png

idobataにログインの通知が投げられてることを確認できた。

試験環境をansibleで作る

vagrantマシンで確認できるよう、playbookを作成した。

group_vars/vagrant に、idobataのhook idを設定しておく。

その後、vagrant, virtualbox, packerをインストールし、

> vagrant up --provision

を実行すれば良い。

外部参考リンク

sshdのmanページ
http://www.unixuser.org/~euske/doc/openssh/jman/sshd.html

ログイン時のユーザー名を調べたい場合に参考にした
http://stackoverflow.com/questions/11052070/get-ssh-login-name-in-bash-script

今回はsshrcを利用したが、PAMを利用することも可能。
以下の記事にPAMを利用してshell scriptを実行するやり方がある。
PAMを使いたい場合、
/etc/ssh/sshd_configUsePAM オプションを有効にしておくこと。
http://unix.stackexchange.com/questions/7390/ssh-login-hook

通知するということ

とあるオペレーションをした後、
マシンが不調になるとか(サービスがいつの間にか死んでる)、
そういうのって基本ログから漁ると思う。

で、人の操作によるものかどうかって
ログインに利用したユーザーのbash historyから追ったり、
今回の場合のようにsshでのログイン状況を確認したい場合は
/var/log/secure の内容を後から見たりすれば良い。

が、できればアクセスした時に通知してもらったほうがありがたい。
「あとでログを確認する」というpull型のやり方は、
不具合やら暇つぶしやら定期メンテやら、
何かしらのイベントが発生しない限り見ない。

push型の仕組みを導入することでログを閲覧する機会が増えていくと思う。

26
26
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
26
26