Linux за българи: Форуми

Linux секция за начинаещи => Настройка на програми => Темата е започната от: makeme в Dec 29, 2017, 21:04



Титла: Опростен изход от smartctl
Публикувано от: makeme в Dec 29, 2017, 21:04
Здравейте, колеги.
Написал съм си едно просто баш скриптче дето ми събира изхода от "smartctl" и ми изважда в три реда това, което ми трябва.

https://github.com/makemegit/lazy-smartctl/blob/master/lazy-smartctl ($2)

Използва се:
Вместо примерно smartctl -a /dev/sda пускате него ./lazy-smartctl -a /dev/sda.
Би трябвало да върви на всяка модерна линукс система.

Примери от изхода:
Код:
Device: Seagate Constellation ES.3 - 7200 rpm - [1.00 TB]
PowerOn Time: 2y 356d 4h
Self-assessment test: PASSED Reallocated Sectors: 0 Temp: 30°C

Код:
Device: SiliconMotion based SSDs - Solid State Device - [256 GB]
PowerOn Time: 683 Days Total Reads: 2252.56 GB Total Writes: 5478.81 GB
Self-assessment test: PASSED Reallocated Sectors: 0 Life: 99% Temp: 33°C

Стойностите светват в червено, ако не ми харесват:)

Та, върши си ми работа, но ми трябва малко фиидбек относно работата му на различни хардове/ссд-та. По специално дали това за което грепя, винаги е така (до колкото знам, различните СМАРТ контролери - репортват различно).

Също така ще съм ви и много благодарен, ако кажете и за какво друго гледате в изхода от smartctl.

Скрипта главно го използвам, когато ми дадат няколко стари (наемат се за последно и после отиват в коша) сървъри за да проверя състоянието на хардовете. Обикновено тези машини идват само с много стари хардове (първия изход от скрипта е от такъв, който е от добрите :) ) и аз ги проверявам дали ще могат да изкарат кат за последно :)

Както знаете не съм програмист и скрипта съм го кърпил с времето, така че и предложения по кода също приемам. Идеята е да го направя по-гъвкав, че да не си губя времето да скролвам из изхода от smartctl (ако има смартЕрори е нещо страшно).

ПП: Качил съм го в Гит понеже е около 150 реда, но ако искате ще го пейстна и тук. В случай, че не ви се занимава да го преглеждате, ще изброя нещата за които грепя, като се надявам поне да предложите и обсъдим допълнения:

Код:
Model Family
Rotation Rate
Power_On_Hours
Host_Reads_32MiB
Host_Writes_32MiB
Remaining_Lifetime_Perc
overall-health
Reallocated_Sector_Ct
capacity
error count
Temperature_Celsius
Current_Pending_Sector

Разбира се, ако го няма не го изважда.


Титла: Re: Опростен изход от smartctl
Публикувано от: Naka в Dec 29, 2017, 22:47
аз гледам най вече тези три работи.
http://www.linux-bg.org/forum/index.php?topic=43458.msg263931#msg263931


Титла: Re: Опростен изход от smartctl
Публикувано от: makeme в Dec 29, 2017, 23:01
Много благодаря, @Naka!
Въпреки, че тамата от линка е причината да съм в този форум (гугъл ме прати тук преди години :) ), не се бях сетил да я погледна пак. Може би защото всъщност се фокусирах върху различния изход при ssd-тата, но определено изброените от теб, отиват в скрипта.

Да добавя тук и един друг въпрос за хората, които имат SSD:
Моля, ако на някой репорта за оставащия живот на диска е различен от "Remaining_Lifetime_Perc" да го пейстне тук.

ПП: Предложенията на @Naka са добавени. Скрипта е качен в Гит, че така, с прикачени файлове не е хава :)


Титла: Re: Опростен изход от smartctl
Публикувано от: jet в Dec 30, 2017, 02:40
Може би: Media_Wearout_Indicator

Едно четиво:
https://media.kingston.com/support/downloads/MKP_306_SMART_attribute.pdf


Титла: Re: Опростен изход от smartctl
Публикувано от: Naka в Dec 30, 2017, 10:35
Специално за Reallocated_Sector_Ct самото наличие на нещо различно от нула не е грешка и не би трябвало да свети в червено, ако е малко - например само десетина-двадесет. Може би ако е повече от 50-100?

Но това което е за тревога (и би трябвало да светне) е ако нараства постоянно с времето. Например днес е 1, утре го гледаш вече е 3, след още един два дена е станало 5, след това 6,7,10, 15.

Е такова нарастване с времето ако можеш да го хванеш със скрипта и да светне например в жълто - за  warning е много добра индикация, че с някой диск нещо става и в най-близко бъдеще може да умре. Не казвам че ще умре. Може както се покачват, така и да спрат и да се застопори.


Мога ти кажа за Seagate как се държат. около 50 % от тях имат Reallocated сектори 10-20. другите 50% са на 0. И аз имам Constellation и редовно ги следя.


Залепил съм си едно жълто листче на монитора и когато забележа промяна записвам Reallocated_Sector_Ct, работните часове и датата. тук преписвам лисчето за ориентация.

Код:
sda
сектори часове    дата
4            12800     1.Aug.2014
5            13312     20.Aug.2014
6            14000     18.Sept.2014
7            42000     11.Dec.2017

sdd
67   24000   1.Aug.2014
69   37000   25.Jan.2016
70   37409   6.Feb.2016

Та ако скрипта ти може да прави такова нещо - лог като мойто лисче, кога е имало промяна и да писка при бързо нарастване ще е много хубава функция.
Прави впечетление че sda-то за 1.5 месеца е скочило 4,5,6 а след това е спало цели 3 години до 11.Dec.2017 и чак тогава е дигнало на 7 сектора. А диска е само на 42000 часа. А пък другият диск има цели 70 сектора и е на 37000 часа.



Пиша ги тези работи, щото съм виждал диск как умира. Цяла една година един обикновен Seagate работеше без проблеми и беше на 0.
Един ден обаче показа 1. Следващият 2, последващият 3 и така всеки ден растеше с по 2-3 сектора. Така една седмица стигна до 50, и след това почна безконтролно да ги увеличава, направо се взриви. 100 -150- 500 и умря пред очите ми. От първия синдром докато умря минаха 2 седмици, а през всичкото това време работеше идеално.


Титла: Re: Опростен изход от smartctl
Публикувано от: 4096bits в Dec 30, 2017, 12:14
Супер!

Има някакъв питонски модул, който изглежда, че може да опрости цялата работа. Ама нещо май бачка само на Питон 2.


Титла: Re: Опростен изход от smartctl
Публикувано от: spec1a в Dec 30, 2017, 13:13
   Една добра идея е стойностите периодично да се записват в база данни
(напр. MySQL) и през известен период да се вика скрипт,който проверява
как нарастват проблемните сектори.


Титла: Re: Опростен изход от smartctl
Публикувано от: makeme в Dec 30, 2017, 18:36
@Jet, можеш ли да ми дадеш изхода от този ред "Media_Wearout_Indicator" да видя дали стойността е 100 или 0, че в нета има всякакви.

@Naka, разбирам ти логиката, но както споменах тези машини минават  само през мен и след това не са под мой контрол, че да ги следя. Отделно смяната на харда е за сметка на датацентъра така че и 1 сектор да има - им пиша.
Иначе ето ти един простичък скрипт да спреш да драскаш по монитора :) :

Код
GeSHi (Bash):
  1. #!/bin/bash
  2. smartctlpath="/usr/sbin/smartctl"
  3. HDDS="sda sdb"
  4. email="user@mail.com"
  5. filesdir="./"
  6. for DEV in $HDDS
  7. do
  8.        realocated=$($smartctlpath -A /dev/$DEV | grep "Reallocated_Sector_Ct" | awk 'NF>1{print $NF}')
  9.        poweron=$($smartctlpath -A /dev/$DEV | grep "Power_On_Hours" | awk 'NF>1{print $NF}')
  10.        oldres=$(cat $filesdir/$DEV.txt | awk 'NR==1{print $1}')
  11.        if [[ $realocated != $oldres ]]
  12.         then
  13.         echo -e $realocated ' \t '$poweron ' \t '$(date +%d.%B.%Y) >> $filesdir/$DEV.txt # && mail -s "New Reallocated Sector found in $DEV" $email < $filesdir/$DEV.txt
  14.         fi
  15. done

Промени си само променливите и си махни коментара на края, ако искаш и да ти праща мейл. Нагласи си един крон (smartctl иска root) и си готов. Да стане по-сладко, може да си направиш филтър в мейла да ти ги събира в една папка и така ще си имаш листчета в мейла :)
Не пречи и ръчно да попълниш sd*.txt с информацията, която си събрал на ръка и скрипта от там да продължи да следи.

Ето и линк към Гит, ако искаш да го свалиш направо: https://github.com/makemegit/listche/blob/master/listche.sh

@spec1a, намесят ли се бази данни става сложно и трябва да викам програмистите :) . То идеята ми е да е прост баш скрипт понеже докато съм логнат някъде буквално мога да му пейста кода в един файл и да го стартирам.

Edit VladSun: bash syntax highlighting


Титла: Re: Опростен изход от smartctl
Публикувано от: Naka в Jan 15, 2018, 10:51
Май ще трябва да добавяш и  197 Current_Pending_Sector

тук при мен има един лаптопски диск който има 1 такъв сектор, но още няма 198 Offline_Uncorrectable, но очевидно диска има проблеми щото в лога му казва, че има проблем в един LBA сектор. Gogo_SZ в онази тема обесняваше каква е разликата.

Цитат
=== START OF INFORMATION SECTION ===
Model Family:     Seagate Momentus 5400.5
Device Model:     ST9320320AS
Serial Number:    5SX5SAGG
LU WWN Device Id: 5 000c50 0166d69c4
Firmware Version: HP07
User Capacity:    320,072,933,376 bytes [320 GB]
Sector Size:      512 bytes logical/physical
Device is:        In smartctl database [for details use: -P show]
ATA Version is:   ATA8-ACS T13/1699-D revision 4
SATA Version is:  SATA 2.6, 3.0 Gb/s
Local Time is:    Sun Dec 17 17:16:11 2017 EST
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED
See vendor-specific Attribute list for marginal Attributes.

General SMART Values:
Offline data collection status:  (0x00)   Offline data collection activity
               was never started.
               Auto Offline Data Collection: Disabled.
Self-test execution status:      (   0)   The previous self-test routine completed
               without error or no self-test has ever
               been run.
Total time to complete Offline
data collection:       (  723) seconds.
Offline data collection
capabilities:           (0x73) SMART execute Offline immediate.
               Auto Offline data collection on/off support.
               Suspend Offline collection upon new
               command.
               No Offline surface scan supported.
               Self-test supported.
               Conveyance Self-test supported.
               Selective Self-test supported.
SMART capabilities:            (0x0003)   Saves SMART data before entering
               power-saving mode.
               Supports SMART auto save timer.
Error logging capability:        (0x01)   Error logging supported.
               General Purpose Logging supported.
Short self-test routine
recommended polling time:     (   2) minutes.
Extended self-test routine
recommended polling time:     ( 122) minutes.
Conveyance self-test routine
recommended polling time:     (   3) minutes.
SCT capabilities:           (0x003f)   SCT Status supported.
               SCT Error Recovery Control supported.
               SCT Feature Control supported.
               SCT Data Table supported.

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   077   072   006    Pre-fail  Always       -       54720505
  3 Spin_Up_Time            0x0002   099   096   000    Old_age   Always       -       0
  4 Start_Stop_Count        0x0033   097   097   020    Pre-fail  Always       -       3723
  5 Reallocated_Sector_Ct   0x0033   100   100   036    Pre-fail  Always       -       0
  7 Seek_Error_Rate         0x000f   084   060   030    Pre-fail  Always       -       278639365
  9 Power_On_Hours          0x0032   090   090   000    Old_age   Always       -       8937
 10 Spin_Retry_Count        0x0013   100   100   097    Pre-fail  Always       -       0
 12 Power_Cycle_Count       0x0033   097   097   020    Pre-fail  Always       -       3632
184 End-to-End_Error        0x0033   100   100   097    Pre-fail  Always       -       0
187 Reported_Uncorrect      0x0032   001   001   000    Old_age   Always       -       53622
188 Command_Timeout         0x0032   100   098   000    Old_age   Always       -       4295033294
189 High_Fly_Writes         0x003a   100   100   000    Old_age   Always       -       0
190 Airflow_Temperature_Cel 0x0022   081   043   045    Old_age   Always   In_the_past 19 (0 27 19 15 0)
191 G-Sense_Error_Rate      0x0032   100   100   000    Old_age   Always       -       12
192 Power-Off_Retract_Count 0x0032   100   100   000    Old_age   Always       -       0
193 Load_Cycle_Count        0x0032   099   099   000    Old_age   Always       -       3398
194 Temperature_Celsius     0x0022   019   057   000    Old_age   Always       -       19 (0 10 0 0 0)
195 Hardware_ECC_Recovered  0x001a   053   044   000    Old_age   Always       -       54720505
196 Reallocated_Event_Count 0x0033   100   100   036    Pre-fail  Always       -       0
197 Current_Pending_Sector  0x0012   100   100   000    Old_age   Always       -       1
198 Offline_Uncorrectable   0x0010   100   100   000    Old_age   Offline      -       0
199 UDMA_CRC_Error_Count    0x003e   200   200   000    Old_age   Always       -       0
254 Free_Fall_Sensor        0x0032   100   100   000    Old_age   Always       -       0

SMART Error Log Version: 1
ATA Error Count: 61458 (device log contains only the most recent five errors)
   CR = Command Register [HEX]
   FR = Features Register [HEX]
   SC = Sector Count Register [HEX]
   SN = Sector Number Register [HEX]
   CL = Cylinder Low Register [HEX]
   CH = Cylinder High Register [HEX]
   DH = Device/Head Register [HEX]
   DC = Device Command Register [HEX]
   ER = Error register [HEX]
   ST = Status register [HEX]
Powered_Up_Time is measured from power on, and printed as
DDd+hh:mm:SS.sss where DD=days, hh=hours, mm=minutes,
SS=sec, and sss=millisec. It "wraps" after 49.710 days.

Error 61458 occurred at disk power-on lifetime: 8936 hours (372 days + 8 hours)
  When the command that caused the error occurred, the device was active or idle.

  After command completion occurred, registers were:
  ER ST SC SN CL CH DH
  -- -- -- -- -- -- --
  40 51 00 66 97 22 0b  Error: UNC at LBA = 0x0b229766 = 186816358

  Commands leading to the command that caused the error were:
  CR FR SC SN CL CH DH DC   Powered_Up_Time  Command/Feature_Name
  -- -- -- -- -- -- -- --  ----------------  --------------------
  25 00 80 0f 97 22 eb 00      00:02:36.435  READ DMA EXT
  25 00 80 87 24 0b ea 00      00:02:36.305  READ DMA EXT
  25 00 80 0f 97 22 eb 00      00:02:34.072  READ DMA EXT
  25 00 80 07 24 0b ea 00      00:02:34.071  READ DMA EXT
  25 00 80 8f 96 22 eb 00      00:02:34.070  READ DMA EXT

Error 61457 occurred at disk power-on lifetime: 8936 hours (372 days + 8 hours)
  When the command that caused the error occurred, the device was active or idle.

  After command completion occurred, registers were:
  ER ST SC SN CL CH DH
  -- -- -- -- -- -- --
  40 51 00 66 97 22 0b  Error: UNC at LBA = 0x0b229766 = 186816358

  Commands leading to the command that caused the error were:
  CR FR SC SN CL CH DH DC   Powered_Up_Time  Command/Feature_Name
  -- -- -- -- -- -- -- --  ----------------  --------------------
  25 00 80 0f 97 22 eb 00      00:02:34.072  READ DMA EXT
  25 00 80 07 24 0b ea 00      00:02:34.071  READ DMA EXT
  25 00 80 8f 96 22 eb 00      00:02:34.070  READ DMA EXT
  25 00 80 87 23 0b ea 00      00:02:34.069  READ DMA EXT
  25 00 80 0f 96 22 eb 00      00:02:34.069  READ DMA EXT

Error 61456 occurred at disk power-on lifetime: 8936 hours (372 days + 8 hours)
  When the command that caused the error occurred, the device was active or idle.

  After command completion occurred, registers were:
  ER ST SC SN CL CH DH
  -- -- -- -- -- -- --
  40 51 00 66 97 22 0b  Error: UNC at LBA = 0x0b229766 = 186816358

  Commands leading to the command that caused the error were:
  CR FR SC SN CL CH DH DC   Powered_Up_Time  Command/Feature_Name
  -- -- -- -- -- -- -- --  ----------------  --------------------
  25 00 80 0f 97 22 eb 00      00:01:11.995  READ DMA EXT
  35 00 08 47 00 60 e0 00      00:01:11.994  WRITE DMA EXT
  35 00 08 2f 00 5e e0 00      00:01:11.994  WRITE DMA EXT
  35 00 06 0f f1 00 e0 00      00:01:11.994  WRITE DMA EXT
  35 00 08 ff ff ff ef 00      00:01:11.993  WRITE DMA EXT

Error 61455 occurred at disk power-on lifetime: 8936 hours (372 days + 8 hours)
  When the command that caused the error occurred, the device was active or idle.

  After command completion occurred, registers were:
  ER ST SC SN CL CH DH
  -- -- -- -- -- -- --
  40 51 00 66 97 22 0b  Error: UNC at LBA = 0x0b229766 = 186816358

  Commands leading to the command that caused the error were:
  CR FR SC SN CL CH DH DC   Powered_Up_Time  Command/Feature_Name
  -- -- -- -- -- -- -- --  ----------------  --------------------
  25 00 80 0f 97 22 eb 00      00:01:09.629  READ DMA EXT
  35 00 08 47 00 5e e0 00      00:01:09.629  WRITE DMA EXT
  35 00 05 0f f1 00 e0 00      00:01:09.628  WRITE DMA EXT
  35 00 08 57 2d 00 e0 00      00:01:09.628  WRITE DMA EXT
  25 00 80 0f 97 22 eb 00      00:01:07.223  READ DMA EXT

Error 61454 occurred at disk power-on lifetime: 8936 hours (372 days + 8 hours)
  When the command that caused the error occurred, the device was active or idle.

  After command completion occurred, registers were:
  ER ST SC SN CL CH DH
  -- -- -- -- -- -- --
  40 51 00 66 97 22 0b  Error: UNC at LBA = 0x0b229766 = 186816358

  Commands leading to the command that caused the error were:
  CR FR SC SN CL CH DH DC   Powered_Up_Time  Command/Feature_Name
  -- -- -- -- -- -- -- --  ----------------  --------------------
  25 00 80 0f 97 22 eb 00      00:01:07.223  READ DMA EXT
  35 00 68 3f 39 5f e0 00      00:01:07.222  WRITE DMA EXT
  35 00 10 b7 a9 34 e0 00      00:01:07.222  WRITE DMA EXT
  35 00 18 df 44 01 e0 00      00:01:07.221  WRITE DMA EXT
  35 00 10 cf 9c 00 e0 00      00:01:07.221  WRITE DMA EXT

SMART Self-test log structure revision number 1
No self-tests have been logged.  [To run self-tests, use: smartctl -t]

SMART Selective self-test log data structure revision number 1
 SPAN  MIN_LBA  MAX_LBA  CURRENT_TEST_STATUS
    1        0        0  Not_testing
    2        0        0  Not_testing
    3        0        0  Not_testing
    4        0        0  Not_testing
    5        0        0  Not_testing
Selective self-test flags (0x0):
  After scanning selected spans, do NOT read-scan remainder of disk.
If Selective self-test is pending on power-up, resume after 0 minute delay.


Сега ще го тествам с dd за четене и с програмата на сеагейт и пак ще пиша.




------------------------------------------------------

PS: Както се очакваше току що dd-то изби с Input/output error на същият сектор кaто в лога му.
Цитат
oot@Microknoppix:~# dd if=/dev/sda of=/dev/null bs=32768
dd: error reading '/dev/sda': Input/output error
2919005+1 records in
2919005+1 records out
95649972224 bytes (96 GB, 89 GiB) copied, 1437.23 s, 66.6 MB/s
root@Microknoppix:~#

dmesg
Цитат
[ 3935.751455] blk_update_request: I/O error, dev sda, sector 186816358
[ 3935.751465] Buffer I/O error on dev sda, logical block 23352044, async page read


PS2: След SeaTools(dos) ->full_test,   програмата го откри проблемният сектор, предложи да го оправи и го оправи.
сега резултата е:
Цитат
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  1 Raw_Read_Error_Rate     0x000f   117   072   006    Pre-fail  Always       -       132909457
  3 Spin_Up_Time            0x0002   099   096   000    Old_age   Always       -       0
  4 Start_Stop_Count        0x0033   097   097   020    Pre-fail  Always       -       3726
  5 Reallocated_Sector_Ct   0x0033   100   100   036    Pre-fail  Always       -       0
  7 Seek_Error_Rate         0x000f   084   060   030    Pre-fail  Always       -       278640413
  9 Power_On_Hours          0x0032   090   090   000    Old_age   Always       -       8940
 10 Spin_Retry_Count        0x0013   100   100   097    Pre-fail  Always       -       0
 12 Power_Cycle_Count       0x0033   097   097   020    Pre-fail  Always       -       3635
184 End-to-End_Error        0x0033   100   100   097    Pre-fail  Always       -       0
187 Reported_Uncorrect      0x0032   001   001   000    Old_age   Always       -       53626
188 Command_Timeout         0x0032   100   098   000    Old_age   Always       -       4295033294
189 High_Fly_Writes         0x003a   100   100   000    Old_age   Always       -       0
190 Airflow_Temperature_Cel 0x0022   075   043   045    Old_age   Always   In_the_past 25 (0 27 27 24 0)
191 G-Sense_Error_Rate      0x0032   100   100   000    Old_age   Always       -       12
192 Power-Off_Retract_Count 0x0032   100   100   000    Old_age   Always       -       0
193 Load_Cycle_Count        0x0032   099   099   000    Old_age   Always       -       3417
194 Temperature_Celsius     0x0022   025   057   000    Old_age   Always       -       25 (0 10 0 0 0)
195 Hardware_ECC_Recovered  0x001a   058   044   000    Old_age   Always       -       132909457
196 Reallocated_Event_Count 0x0033   100   100   036    Pre-fail  Always       -       0
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
254 Free_Fall_Sensor        0x0032   100   100   000    Old_age   Always       -       0

Тъй че слагай го. Offline_Uncorrectable  и Current_Pending_Sector са дупе и гащи. Винаги съм ги виждал в комплект - или е само едното или само другото или двете едновременно. Но и двата означават бад сектори и диска там не може да чете.



Титла: Re: Опростен изход от smartctl
Публикувано от: VladSun в Jan 15, 2018, 13:44
   Една добра идея е стойностите периодично да се записват в база данни
(напр. MySQL) и през известен период да се вика скрипт,който проверява
как нарастват проблемните сектори.

За такива неща - Zabbix

https://share.zabbix.com/storage-devices/smartmontools ($2)

не съм ги разглеждал, но ако не ти харесат - пишеш си твои :)


Титла: Re: Опростен изход от smartctl
Публикувано от: go_fire в Jan 17, 2018, 07:19
Майк ми, ще си пзволя да те критикувам!

Темата е много интересна и както се казва на чист български — евала!

Ама прочети сам, за какво си говорите — баш, смарт, сървъри.

Е кое от тези, кой точно новак го знае, какво е ???

И сам си написал, че това нещо го ползваш, за да улеснява професионалния ти живот, макар вероятно да може да се употреби и вкъщи.

Така, че присъдата е дадена. Това не е тема за начинаещи!


Титла: Re: Опростен изход от smartctl
Публикувано от: makeme в Jan 17, 2018, 11:09
@Naka, когато прочетох за какво е Current_Pending_Sector и се двоумях, но след като писа, "камъчето обърна каруцата" и го добавих. :)

@go_fire, критика винаги понасям. Честно да ти кажа, доста време отделих в търсене на правилния раздел, но явно не съм се справил :) Ако можеш да ми кажеш по-подходящ раздел за подобни скриптчета, работещи с програми (smartctl) с удоволствие ще си взема бележка за следващия път.