数週間前、私はユーザーが自分のサーバーにログインしたときに私に電子メールを送信するスクリプトを書くのが良い考えだと思いました。
そのため、完全に機能するスクリプトを提供し、notifyLogin.sh
各ユーザーのスクリプトからそれを呼び出すことにしました .bash_login
。
ssh
-t
しかし、誰かがスイッチを使って自分のサーバーにログインするために使用できるシェルを選択できることを発見しました。たとえば、
ssh user@myserver -t sh
このように.bash_login
実行されないと実行されません/etc/profile
。
notifyLogin.sh
シェルの種類に関係なく、ログイン時にそれを呼び出す方法はありますか? (常に動作する必要があります)
ベストアンサー1
車輪を再発明しないで、rsyslog
すべてがあなたのためになされるようにしなさい。ファイルに到達する前にsyslogメッセージのパターンが一致した場合は、電子メールを送信できます。
以下に電子メールアドレスとSMTPサーバーを設定して入力または/etc/rsyslog.conf
入力/etc/rsyslog.d/
します。rsyslogの再起動
$ModLoad ommail
$ActionMailSMTPServer localhost
$ActionMailFrom [email protected]
$ActionMailTo [email protected]
$template mailSubject,"Login Alert on %hostname%"
$template mailBody,"\n\n%msg%"
$ActionMailSubject mailSubject
$ActionExecOnlyOnceEveryInterval 1
# the if ... then ... mailBody mus be on one line!
if $msg contains 'session opened for user' then :ommail:;mailBody
メッセージの文字列と一致すると、 rsyslog
電子メールがトリガーされます。session opened for user
/var/log/auth.log
メッセージを表示し、sshd
パターンとして使用できる他の内容を確認できます。
源泉:rsyslog メール