LINUX.ORG.RU
ФорумAdmin

Парсинг выхлопа

 


0

2
...
=== START OF READ SMART DATA SECTION ===
SMART Attributes Data Structure revision number: 10
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  1 Raw_Read_Error_Rate     0x000f   107   097   006    Pre-fail  Always       -       0
  3 Spin_Up_Time            0x0003   095   095   000    Pre-fail  Always       -       0
  4 Start_Stop_Count        0x0032   100   100   020    Old_age   Always       -       161
  5 Reallocated_Sector_Ct   0x0033   100   100   036    Pre-fail  Always       -       0
  7 Seek_Error_Rate         0x000f   085   060   030    Pre-fail  Always       -       362718182
  9 Power_On_Hours          0x0032   049   049   000    Old_age   Always       -       45320
 10 Spin_Retry_Count        0x0013   100   100   097    Pre-fail  Always       -       0
 12 Power_Cycle_Count       0x0032   100   100   020    Old_age   Always       -       214
187 Reported_Uncorrect      0x0032   100   100   000    Old_age   Always       -       0
189 High_Fly_Writes         0x003a   100   100   000    Old_age   Always       -       0
190 Airflow_Temperature_Cel 0x0022   070   058   045    Old_age   Always       -       30 (Min/Max 27/34)
194 Temperature_Celsius     0x0022   030   042   000    Old_age   Always       -       30 (0 19 0 0)
195 Hardware_ECC_Recovered  0x001a   061   054   000    Old_age   Always       -       56211952
197 Current_Pending_Sector  0x0012   100   100   000    Old_age   Always       -       0
198 Offline_Uncorrectable   0x0010   100   100   000    Old_age   Offline      -       0
199 UDMA_CRC_Error_Count    0x003e   200   200   000    Old_age   Always       -       0
200 Multi_Zone_Error_Rate   0x0000   100   253   000    Old_age   Offline      -       0
202 Data_Address_Mark_Errs  0x0032   100   253   000    Old_age   Always       -       0
...

Отбираем по именам

# sudo smartctl -A /dev/sda | grep Power_On_Hours | awk '{print $ 10+0}'
45320
Но, вместо «Power_On_Hours» логичнее использовать номер атрибута в технологии S.M.A.R.T.
# sudo smartctl -A /dev/sda | grep ^195 | awk '{print $ 10+0}'
56765636
# sudo smartctl -A /dev/sda | grep "^  9" | awk '{print $ 10+0}'
45320
Проблема с номерами от 1-99. Прошу помощи в унификации условия?

★★★★★

Ответ на: комментарий от ziemin

Неа, пробовал первым делом. Необходимо сказать, что перед ID может быть 0 или 2 \s(пробела). Плохо понимаю regexp.

petav ★★★★★ ()
Ответ на: комментарий от petav

У меня выдаёт одну строку с девяткой. Перед ней два пробела. Как ты пробовал?

ziemin ★★ ()
Ответ на: комментарий от ziemin

А попробуй 1 вместо 9.

# sudo smartctl -A /dev/sda | grep "^\s*1" | awk '{print $ 10+0}'0
0
214
0
0
30
30
57917017
0
0
0

petav ★★★★★ ()
Последнее исправление: petav (всего исправлений: 1)
Ответ на: комментарий от ziemin

Вот лучше:

^\s*9\s

Видимо да

# sudo smartctl -A /dev/sda | grep "^\s*1\s" | awk '{print $ 10+0}'
0
# sudo smartctl -A /dev/sda | grep "^\s*9\s" | awk '{print $ 10+0}'
45320
# sudo smartctl -A /dev/sda | grep "^\s*202\s" | awk '{print $ 10+0}'
0

petav ★★★★★ ()
Ответ на: комментарий от petav
sudo smartctl -A /dev/sda | grep "^\s*1\s" | awk '{print $ 10+0}'

А так не проще?

sudo smartctl -A /dev/sda | awk '{ if ( $1 == 9 ) { print $ 10+0 ; } }'
router ★★★★★ ()
Ответ на: комментарий от petav

Ещё как вариант, граница слова в регулярных выражениях обозначается как \<, \> и \b - левая, правая и любая граница соответственно.

router ★★★★★ ()
Ответ на: комментарий от router

А так не проще?

так логичнее даже (насколько я понял принцип использования awk)

petav ★★★★★ ()

grep | awk

https://www.google.ru/search?q=useless use of grep

sudo smartctl -A /dev/sda | awk -v attr=194 '($1==attr){print $10+0}

Переменную вынес наружу программы для более лёгкой подстановки значения из внешних скриптов, если такие будут.

AITap ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.