
私は毎晩すべてのRHELサーバーからハードウェア統計情報を取得し、それをyyyymmdd_毎日.logファイル。これらのファイルに対して特定のデータを抽出するために実行する他のスクリプトがあります(つまりドライブアレイステータス、ハードウェアステータス、ディスク空き容量など)をさまざまなタスクに使用します。
例ハードウェアステータススクリプト出力:
#######################
Server: abc
** Fans **
Health: Ok
** Power Supplies **
Redundancy: Full
#######################
Server: bcd
** Fans **
Health: Partial
** Power Supplies **
Redundancy: Half
#######################
Server: cde
** Fans **
Health: Down
** Power Supplies **
Redundancy: None
#######################
etc... for 44 servers
失敗はほとんどないので、スクリプトを実行したときに何らかのエラーを示す行を色分けしたいと思います。grep を使用して、精査する行を選択できます。
./HardwareStatus | grep '^Health\|^Redundancy\|$'
しかし、ここからは、それぞれの満足のいく応答で終わらない精査された行のみを色分けする必要があります。
./HardwareStatus | grep --color=auto -v 'Ok$\|Full$'
行選択 grep ステートメントを 2 番目の grep にパイプしたり、egrep を使用したりしてみましたが、スクリプトの出力から満足のいく応答が得られない行はそのまま削除されます。
ご協力いただければ幸いです。
答え1
Python のパッケージを使用して、colorama
簡単なフィルターを作成することができます (または、Python で記述されている HardwareStatus スクリプトに含めることもできます)。
#!/usr/bin/env python3
import fileinput
from colorama import init, Fore, Back, Style
init()
for line in fileinput.input():
message = line.strip()
if (("Health:" in message and "Ok" not in message) or
("Redundancy:" in message and "Full" not in message)):
print(Back.RED + Fore.YELLOW + message + Style.RESET_ALL)
else:
print(message)
上記のスクリプトを使用するには、上記の例で grep を使用したのと同じように、HardwareStatus の出力をパイプするだけです。
見るColoramaのドキュメント詳細については。