Запуск smartctl на всех дисках сервера

Мой вопрос довольно простой, я хочу запустить команду smartctl -i -A на всех дисках, которые есть у сервера. Подумайте, что у меня слишком много серверов с различным количеством дисков и RAID-контроллеров, тогда мне нужно отсканировать все драйверы для диагностики. Я думаю о запуске smartctl --scan | awk '{print $1}' >> test.log smartctl --scan | awk '{print $1}' >> test.log , поэтому, если я открою test.log, у меня будет информация о всех дисках.
После этого мне нужно запустить некоторые конструкции if или do для сканирования с помощью smartctl всех драйверов. Я не знаю, подходит ли это для этого, так как мне нужно также определить RAID-контроллер. Am заголовок в правильном направлении?

Редактировать:

Я использую эти команды для устранения неполадок:

Без RAID-контроллера

 for i in {c..d}; do echo "Disk sd$i" $SN $MD smartctl -i -A /dev/sd$i |grep -E "^ "5"|^"197"|^"198"|"FAILING_NOW"|"SERIAL"" done 

Контроллер PERC

 for i in {0..12}; do echo "$i" $SN $MD smartctl -i -A -T permissive /dev/sda -d megaraid,$i |grep -E "^ "5"|^"197"|^"198"|"FAILING_NOW"|"SERIAL"" done /usr/sbin/megastatus –physical /usr/sbin/megastatus --logical 

Контроллер 3ware

 for i in {0..10}; do echo "Disk $i" $SN $MD smartctl -i -A /dev/twa0 -d 3ware,$i |grep -E "^ "5"|^"197"|^"198"|"FAILING_NOW"|"SERIAL"" done 

SmartArray & Megaraid Controler:

 smartctl –a –d cciss,0 /dev/cciss/c0d0 /opt/3ware/9500/tw_cli show cd /tmp 

DD (переписать блок диска (DESTROY DATA)):

 dd if=/dev/zero of=/dev/HD* bs=4M HD*: sda, sdb… 

Burning (стресс-тест (DESTROY DATA)):

 /opt/systems/bin/vs-burnin --destructive --time=<hours> /tmp/burninlog.txt 

Dmesg & kernerrors:

 tail /var/log/kernerrors dmesg |grep –i –E “”ata”|”fault”|”error” 

Поэтому я пытаюсь автоматизировать эти команды.
Я хочу, чтобы скрипт подтвердил все диски, которые есть у хоста, и запустил соответствующую команду smartctl для этого случая.
Что-то вроде меню с некоторыми параметрами, которые позволяют мне выбирать, хочу ли я запускать smartctl или какую-то деструктивную команду, если я smartctl запустить smartctl
скрипт сканирует все диски и запускает команду в соответствии с конфигурацией хоста (с / без RAID-контроллера),
и если я захочу запустить деструктивную команду, скрипт попросит меня поместить номер диска, который я хочу сделать.


Изменить 2:

Я решил проблему со следующим скриптом:

 #!/bin/bash # Troubleshoot.sh # A more elaborate version of Troubleshoot.sh. SUCCESS=0 E_DB=99 # Error code for missing entry. declare -A address # -A option declares associative array. if [ -f Troubleshoot.log ] then rm Troubleshoot.log fi if [ -f HDs.log ] then rm HDs.log fi smartctl --scan | awk '{print $1}' >> HDs.log lspci | grep -i raid >> HDs.log getArray () { i=0 while read line # Read a line do array[i]=$line # Put it into the array i=$(($i + 1)) done < $1 } getArray "HDs.log" for e in "${array[@]}" do if [[ $e =~ /dev/sd* || $e =~ /dev/hd* ]] then echo "smartctl -i -A $e" >> Troubleshoot.log smartctl -i -A $e >> Troubleshoot.log # Run smartctl into all disks that the host have fi done exit $? # In this case, exit code = 99, since that is function return. 

Я не знаю, является ли это решение правильным или лучшим, но работает для меня!
Цените всю помощь!

  • На выходе smartctl, что означает LifeTime (часы)?
  • Как проверить оставшуюся жизнь на SSD или уровне износа среды?
  • как выполнить очистку данных (например, смягчение бит битва памяти), в linux / unix?
  • Скрипт для распознавания жестких дисков и запуск Smartctl
  • Почему «smartctl -l xerror» LBA находится за пределами конца диска?
  • bash - Разделить значения «таблицы» в строки в массиве
  • Как стереть или записать нули на жесткий диск с помощью / dev / sg2
  • SMART расширенная автономная проверка работоспособности
  • One Solution collect form web for “Запуск smartctl на всех дисках сервера”

    Поэтому я пытаюсь автоматизировать эти команды.

    Это уже существует и проявляется в smartd .

    Обычно вам нужно настроить желаемое поведение в /etc/smartd.conf

    Пример:

     # DEVICESCAN: tells smartd to scan for all ATA and SCSI devices # Alternative setting to report more useful raw temperature in syslog. DEVICESCAN -I 194 -I 231 -I 9 

    Вы также можете явно указать свои диски

     /dev/sdc -d 3ware,0 -a -s L/../../7/01 

    Если smartd обнаружит ошибку, вы получите электронное письмо:

     /dev/hdc -a -I 194 -W 4,45,55 -R 5 -m admin@example.com 

    Существует также ряд других опций и переключателей, вам нужно будет прочитать man- smartd.conf .

    Linux и Unix - лучшая ОС в мире.