SSHログイン時にスクリプトを実行する

SSHログイン時にスクリプトを実行する

私には 4 人のユーザーがいる開発環境があり、彼らは在宅勤務の請負業者なので、ログインした時間を記録できるようにしたいと考えています。

どうすればいいのか全くわかりません。今週末にシステム管理者が辞めてしまい、途方に暮れています。1 日の最初のログイン時のみ、スクリプトまたはコマンドを実行できるようにしたいです。可能であれば、ログアウト時にも実行できるようにしたいです。

例:

今日午前 8 時、user1 がログイン: コマンド /path/command.sh を実行 今日午前 9 時、user2 がログイン: コマンド /path/command.sh を実行 今日午後 2 時、user1 がログアウト 今日午後 3 時、user1 がログイン: 何もしない 今日午後 4 時、user1 がログイン (2 番目のシェル ウィンドウ): 何もしない など...

.profileファイルを使用できると思いますが、よくわかりません。

Ubuntuサーバー12.04で実行中

答え1

ログインした時間を追跡するために、何もする必要はありません。lastコマンドを実行すると、1 週間半後であっても、ログインした時間がわかります。また、ログアウトした時間もわかるので、役に立つでしょう。

コマンドを実行する限り、ファイルを使用できます.profileが、その最大の問題は、多くのプログラマーがこのファイルを変更して好みの環境を設定し、変更内容を消去してしまう可能性があることです。彼らにそれをしてはいけないと言わないでください。ドットファイルを使用して個別の環境を設定することは、仕事の一部にすぎません。せいぜい技術的に未熟に見えるだけですが、最悪の部分についてはここでは触れません。

正直に言うと、私がお勧めするのは、そのコマンドを実行して何をするにしても、別の方法を見つけることです。これは人事/社会学/管理の問題であり、技術的な手段でこれらの問題を解決しようとするのは... 良くありません。また、@Vinz が指摘しているように、ユーザーがログインしたときにログインするだけでは、ユーザーが行っている作業に関する有用な情報が得られるわけではありません。

答え2

現在何を実行しているかを確認するために使用できる簡単なコマンドがいくつかあります。

  • ラストログ#最後にログオンした日時を確認する
  • 誰が#現在マシンに接続しているユーザーを確認する
  • ps -U ユーザー名#どのプロセスを使用しているかを表示します
  • lsof | grep ユーザー名 #使用中のフィールドを表示します

しかし、これは管理上の問題、あるいは信頼の問題のように思えます。

関連情報