私はスクリプトの初心者ですが、ユーザーがLinuxサーバーにログインした時間を確認するスクリプトを作成するように求められました。たとえば、5時間を超えると終了ステータスが必要です。これは当社の監視システムによって検出され、警告を受ける可能性があります。
私は誰かが私のために台本を書くことを期待していませんが(私は嘘つきではありません)、できるだけ多くの提案をしていただきありがとうございます。
このタスクや同様のタスクを実行するシェルスクリプトを書いた経験がある人はいますか?
よろしくお願いします。
答え1
彼らが使用するプログラムwho
とw
ファイルを見てくださいutmp
。wtmp
ファイル自体(情報がバイナリ形式のままである場合)を調べるプログラムを作成するのではなく、これらのプログラムの1つの出力を解析するスクリプトを作成する方が簡単です。
man who
より多くの情報をお待ちください。
答え2
このlast
順序を考えてみましたか?
答え3
Nagiosプラグインの毎日のコストです。他のものを使用する場合は、モニタリングシステムがプラグインが何を求めているのかを把握する必要があります。 Nagiosには、標準出力に書き込まれる内容とプラグインの終了状態に対する文書化されたインタフェースがあります。
Nagiosプラグイン開発の出発点は、人々がすでにいくつかの作業を完了している場所です。例えばHari SekhonのNagiosプラグインコレクション、check_users.sh
スクリプトが含まれています「古い」部分アクティブなログインフォームを見ていますが、ユーザーが適用したいルールを適用するわけではありません。あなたが望むものを他の人が開発した可能性があります。 Nagiosが提供するバージョンには、check_users
人々が長年にわたって書いたように、多くのバリエーションと機能強化があります。そのうちのいくつかはNagios Exchangeにあります。
$userlist
M. Sekhonのスクリプトは、コマンドの出力を解析して文字列を構築するのを見ることができますwho
。実際には一行にすぎません。あなたが望むのは、who
あなたが書く必要があるコマンド出力のより複雑な処理です。
...またはプログラミング言語で書かれたプログラムが実際に直接読むやや不安定なメカニズムを解析するのではなく、データベースにログイン人が読める(マシンでは解析できません)who
/w
コマンドの出力で、非常に単純な出力生成と終了状態計算を実行します。 Nagiosプラグインはシェルスクリプトで書く必要はありません。これは、ツールの人間が読める出力を機械が処理できる形式に再解析する簡単な方法です。有名なUnices および Linux オペレーティングシステムのエラーソースです。これを参加するという事実と組み合わせるその他人間が読める日時算術形式を使用する悪名高いバグソースのため、ここではシェルスクリプトが非常に脆弱になります。
追加読書
- ジョナサンデボインポラード(2018)。Unixログインデータベース。一般的な答え。
- https://unix.stackexchange.com/a/437762/5132