Puncte:0

Cum pot evidenția liniile unui fișier care încep cu abc și NU se termină cu xyz?

drapel de

Am un script zilnic care preia statisticile hardware de pe toate serverele mele RHEL în fiecare noapte și le salvează într-un aaaammzz_daily.log fişier. Am și alte scripturi pe care le execut împotriva acestor fișiere pentru a extrage date specifice (de ex. DriveArrrayStatus, Stare hardware, DiskFreeSpace, etc.) pentru diferite sarcini.

Exemplu Stare hardware ieșire script:

#######################
Server: abc
** Fani **
Sănătate: Bine
** Surse de alimentare **
Redundanță: completă
#######################
Server: bcd
** Fani **
Sănătate: parțială
** Surse de alimentare **
Redundanță: jumătate
#######################
Server: cde
** Fani **
Sănătate: Jos
** Surse de alimentare **
Redundanță: niciuna
#######################
etc... pentru 44 de servere

Deoarece sunt rareori erori, aș dori să colorez liniile care arată orice fel de eroare atunci când rulez scriptul. Pot selecta liniile de analizat folosind grep:

./HardwareStatus | grep '^Sănătate\|^Redundanţă\|$'

Dar de aici trebuie să colorez NUMAI liniile analizate care NU se termină în răspunsurile lor satisfăcătoare respective:

./HardwareStatus | grep --color=auto -v 'Ok$\|Full$'

Am încercat să introduc instrucțiunea grep de selecție a liniilor la un al doilea grep sau folosind egrep, dar pur și simplu elimină orice linii care nu au răspunsuri satisfăcătoare din rezultatul scriptului.

Orice ajutor ar fi foarte apreciat.

drapel in
Există vreun motiv pentru care reinventați roata și nu utilizați o soluție adecvată de monitorizare?
Puncte:1
drapel br
Mox

Ai putea folosi colorama pachet în Python pentru a scrie un filtru simplu (sau poate includeți-l în scriptul HardwareStatus, dacă este scris în Python)

#!/usr/bin/env python3

import fișier de intrare
din colorama import init, Fore, Back, Style

init()
pentru linia din fileinput.input():
    mesaj = line.strip()
    dacă ((„Sănătate:” în mesaj și „Ok” nu în mesaj) sau
        ("Redundanță:" în mesaj și "Complet" nu în mesaj)):
        imprimare(Înapoi.ROȘU + Înainte.GALBEN + mesaj + Stil.RESET_ALL)
    altceva:
        imprimare (mesaj)

Pentru a utiliza scriptul de mai sus, trebuie doar să direcționați rezultatul HardwareStatus către acesta, așa cum ați făcut cu grep în exemplul dvs. de mai sus.

Vedea documentația Colorama pentru detalii.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.