lastlog
ユーザーがログインすると、SSHログインを監視する他のアプリケーションで使用できるように、コマンドをカスタムファイルに解析します。
私は/etc/pam.d/sshd
その行と一番下の部分を含めました:
session optional pam_exec.so seteuid /usr/local/bin/run_on_login.sh
この作品には大きな欠点が1つあります。スクリプトが以前に実行されたか/var/log/lastlog
更新され/var/log/wtmp
ました。スクリプトを実行するまでは、成功したログインが完了したとは見なされないためです。
糸を入れようとしましたが、/etc/pam.d/login
あまり差がないようです。
完全なログインプロセスが完了した後(ログの書き込みを含む)、pam_execスクリプトを実行する方法はありますか?
答え1
/usr/local/bin/run_on_login.sh
最初はバックグラウンドプロセスとして実行され、数秒待ってから、「最後の」コマンドを解析する別のスクリプトをフォークしてこの問題を解決できました。
たとえば、pam_exec は次のスクリプトを実行します。
#!/bin/bash
# /usr/local/bin/run_on_login.sh
nohup /usr/local/bin/parse_last.sh >/dev/null 2>&1 &
このスクリプトのトリガーは次のとおりです。
#!/bin/bash
# /usr/local/bin/parse_last.sh
sleep 5
# (truncated for brevity)
last -iF | head -n 50 | awk '{print "something"}'