Извлеките значения из выходных данных / файла и отправьте по электронной почте, если! - PullRequest
0 голосов
/ 28 марта 2019

У меня есть сервер с установленным hwraid (megaclisas) https://hwraid.le -vert.net / wiki / DebianPackages

пример вывода выглядит так:

-- Controller information --
-- ID | H/W Model      | RAM    | Temp | BBU    | Firmware     
c0    | PERC H310 Mini | 0MB    | 59C  | Absent | FW: 20.13.3-0001 

-- Array information --
-- ID | Type    |    Size |  Strpsz | Flags | DskCache |   Status |  OS Path | CacheCade |InProgress   
c0u0  | RAID-10 |   3272G |   64 KB | RA,WT |  Default |  Optimal | /dev/sda | None      |None         

-- Disk information --
-- ID    | Type | Drive Model                      | Size     | Status          | Speed    | Temp | Slot ID  | LSI ID  
c0u0s0p0 | HDD  | SEAGATE ST900MM0006 LS0AS0N3Bxxx | 837. Gb  | Online, Spun Up | 6.0Gb/s  | 31C  | [32:0]   | 0       
c0u0s0p1 | HDD  | SEAGATE ST900MM0006 LS0AS0N3Bxxx | 837. Gb  | Online, Spun Up | 6.0Gb/s  | 31C  | [32:1]   | 1       
c0u0s1p0 | HDD  | SEAGATE ST900MM0006 LS0AS0N3Bxxx | 837. Gb  | Online, Spun Up | 6.0Gb/s  | 28C  | [32:2]   | 2       
c0u0s1p1 | HDD  | SEAGATE ST900MM0006 LS0AS0N3Bxxx | 837. Gb  | Online, Spun Up | 6.0Gb/s  | 30C  | [32:3]   | 3       
c0u0s2p0 | HDD  | SEAGATE ST900MM0006 LS0AS0N3Bxxx | 837. Gb  | Online, Spun Up | 6.0Gb/s  | 29C  | [32:4]   | 4       
c0u0s2p1 | HDD  | SEAGATE ST900MM0006 LS0AS0N3Bxxx | 837. Gb  | Online, Spun Up | 6.0Gb/s  | 31C  | [32:5]   | 5       
c0u0s3p0 | HDD  | SEAGATE ST900MM0006 LS0AS0N3Bxxx | 837. Gb  | Online, Spun Up | 6.0Gb/s  | 30C  | [32:7]   | 7       
c0u0s3p1 | HDD  | SEAGATE ST900MM0006 LS0AS0N3Bxxx | 837. Gb  | Online, Spun Up | 6.0Gb/s  | 28C  | [32:6]   | 6   

Чего я хочу добиться, так это получить значение Status, если оно не равно Optimal или Online, а затем передать его по электронной почте.У меня проблема в том, как получить это с помощью sed или awk.

1 Ответ

0 голосов
/ 28 марта 2019

Вот решение, как действовать

data=$(mktemp)
externalprogram > $data
RESULT=$(
    grep "| RAID" $data | sed -n '/Optimal/!p'
    grep "| HDD" $data | sed -n '/Online,/!p'
)
rm $data
echo "$RESULT"

Объяснение * * 1004

  • grep заинтересованных строк
  • распечатать, если шаблон поиска не найден
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...