0

私はLinuxに比較的慣れていません-解決策が単純/明白である場合はご容赦ください..

awk と tail を使用して特定のキーワード パターンのログ ファイルを監視し、これらのキーワードがログ ファイル (sysklogd を使用) に表示されたときに espeak を使用して簡単な通知を提供するバックグラウンド実行スクリプトをセットアップしようとしています。

概念はこのガイドから派生しています

これは私がやろうとしていることの恐ろしい例です:

#!/bin/bash

tail -f -n1 /var/log/example_main | awk '/example sshd/&&/session opened for user/{system("espeak \"Opening SSH session\"")}'

tail -f -n1 /var/log/example_main | awk '/example sshd/&&/session closed/{system("espeak  \"Session closed. Goodbye.\"")}''

tail -f -n1 /var/log/example_main | awk '/example sshd/&&/authentication failure/{system("espeak  \"Warning: Authentication Faliure\"")}'

tail -f -n1 /var/log/example_main | awk '/example sshd/&&/authentication failure/{system("espeak \"Authentication Failure. I have denied access.\"")}'

最初の tail コマンド自体は完全に機能します。定義されたログ ファイルで「example sshd」と「session open for user」を監視し、espeak を使用して「Opening SSH session」と表示します。上記の抜粋から予想されるように、bash スクリプトは複数のテールを同時に実行しません (または、少なくともこの最初のテール コマンドの後で停止します)。

いくつか質問があると思います: このスクリプトはどのように設定すればよいですか? このスクリプトを常にバックグラウンドで実行する最良の方法は何ですか? init など? 私を助けることができるチュートリアル/ドキュメントはどこかにありますか? 私が使用できるこのようなものはすでにありますか?

ありがとう、助けていただければ幸いです-長い投稿で申し訳ありません。

4

1 に答える 1