SSH経由でシステムにログインしていますが、意図的に(シェルシャットダウン)またはSSH接続がダウン/終了したため、ログアウト時にコマンドを強制的に実行したいと思います。これを設定する方法はありますか?今のところ、SSHが閉じられたときに送信される信号(SIGHUP?)を傍受してコマンドを実行するプログラムでログインシェルを変更するのが最善のようですが、よりきれいな解決策があるかどうか疑問に思います。
答え1
最良の方法は次のとおりです。パム。
複数のファイルがあり、/etc/pam.d
そのうちの1つはsshd
sshにのみ影響し、他のログイン(GUIや実際のTTYなど)に影響を与えたくない場合は、このファイルが必要です。
すべてのログインに影響を与えるには、「共通」ファイルが必要です。この他の「一般」ファイルの名前はディストリビューションによって異なりますが、include
デフォルトのファイルが見つかるまでファイルのステートメントに沿って追跡できます。substack
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
(台本を忘れないでください)