ログアウトまたは切断時にコマンドを強制的に実行しますか?


13

私はSSH経由でシステムにログインしていますが、それが意図的なログアウト(シェルの終了)であるか、SSH接続が切断/終了したかどうかにかかわらず、ログアウト時にコマンドを強制的に実行できるようにしたいと思います。これを設定する方法はありますか?現時点での最善の推測は、ログインシェルを、SSHのクローズ時に送信されるシグナルを傍受するプログラム(SIGHUP?)に変更し、コマンドを実行することですが、よりクリーンなソリューションがあるかどうか疑問に思っています。


リモートマシンでコマンドを実行しますか、それとも接続を初期化したマシンでコマンドを実行しますか?
xx4h 14年

回答:


20

これを行う最良の方法は、pamを使用することです。

/etc/pam.dあなたはいくつかのファイルを持っていますが、そのうちの一つが呼び出されますsshd。他のログイン(GUIや実際のTTYなど)ではなく、sshのみに影響を与えたい場合は、このファイルが必要です。
すべてのログインに影響を与える場合は、「共通」ファイルが必要です。この他の「共通」ファイルの名前はディストリビューションによって異なりますが、次の方法で追跡できます。include、ベースファイルに到達するまでファイルsubstack内のand ステートメントをsshdます。

/etc/pam.d使用するファイルを特定したら、次のような行をsessionセクションに。

session     optional    pam_exec.so quiet /etc/pam_session.sh

これにより、/etc/pam_session.sh誰かがログインしたりログアウトしたりするたびに(正常に、または正常に)呼び出しが行われます。

ここで作成する必要があります/etc/pam_session.sh。以下は、誰かがログアウトするたびに何かを実行するために使用できる例です。

#!/bin/sh
if [ "$PAM_TYPE" = "close_session" ]; then
  something
fi

chmod a+xスクリプトを忘れないでください)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.