シェルスクリプトマガジン

最終回 不正アクセスを通知する

 40行目では、ログからログインしてきたマシンのIPアドレスを取り出して変数「IP」に代入しています。41行目は、whoisコマンドを使って、IPアドレスからどの国からのアクセスかを調べ、変数「COUNTRY」に代入しています。米国からの場合は「US」となります。国が分からなかった場合、42~44行目で「不明」としています。

 45行目では、ログからログインしたユーザー名を変数「USER」に代入しています。46行目では、date_time()関数を使って、ログから発生日を取り出して加工し、TIME変数にしています。

 47行目では、login_message()関数でLINEにメッセージを送信しています。変数に取り出した値は、関数の引数で渡しています。関数側では「$1」「$2」「$3」「$4」のように取り出せます。

 51~62行目は、不正アクセスを通知するコードです。51行目で、不正アクセスと思われるログには「error: maximum authentication」という文字列を含む行が記録されています。それを「tmp/tmp_nologin.log」ファイルに保存しています。なお、サーバーに登録されていないユーザーからのアクセスの場合、ログには、アクセスしてきたユーザー名ではなく「invalid user」として記録されます。英語なので「登録なし」に変換しています。

 以降、62行目までは、ログインされたときのメッセージ送信と同じです。ログメッセージが違うので、IPアドレスやユーザー名の取り出す位置が違っています。

 63行目で、メインの処理に利用したファイルをすべて消しています。