
매일 밤 모든 RHEL 서버에서 하드웨어 통계를 검색하여 다음 위치에 저장하는 일일 스크립트가 있습니다.yyyymmdd_daily.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 문을 두 번째 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 문서자세한 내용은.