UBUNTU: Узнаем температуру жестких дисков

Опять про Ubuntu, так же актуально и для других дистрибутивов.
Настала жаркая пора, температура воздуха за 30.
Домашний сервер живет на застекленном балконе.
И если зимой температуры процессора, дисков радуют глаз, то в такую жару становится актуальным минимальный мониторинг температуры.
В этой заметке установим hddtemp (домашняя страница). Узнаем как можно узнать температуру жесткого(их) диска(ов).
Так же рассмотрим возможность добавления в базу hddtemp SSD диска которого нет в его базе.
Прежде всего установим:

sudo apt install hddtemp

Попробуем запустить:

sudo hddtemp /dev/sdd
/dev/sdd: WDC WD2000FYYZ-01UL1B2: 35°C

В результате мы получили достаточно длинную строку с описанием и значением.
В то время как для например скриптов нам нужно голое значение.
Проще всего его можно получить запустив hddtemp с ключем -n.
Что избавит нас от awk, sed и т.п.

sudo hddtemp -n /dev/sdd
35

Так же у меня диском /dev/sda установлен SSD диск, давайте посмотрим на его температуру:

sudo hddtemp  /dev/sda
WARNING: Drive /dev/sda doesn't seem to have a temperature sensor.
WARNING: This doesn't mean it hasn't got one.
WARNING: If you are sure it has one, please contact me (hddtemp@guzu.net).
WARNING: See --help, --debug and --drivebase options.
/dev/sda: Samsung SSD 860 EVO 500G B              ▒@:  no sensor

Похоже на то, что данных о моем SSD диске нет в базе.
При запуске с ключом —debug выведет поля SMART.
Температура HDD хранится в поле 194, а SSD — 194.

sudo hddtemp --debug /dev/sda

================= hddtemp 0.3-beta15 ==================
Model: Samsung SSD 860 EVO 500G B              ▒@

field(5)         = 0
field(9)         = 76
field(12)        = 6
field(177)       = 0
field(179)       = 0
field(181)       = 0
field(182)       = 0
field(183)       = 0
field(187)       = 0
field(190)       = 30
field(195)       = 0
field(199)       = 0
field(235)       = 2
field(241)       = 45

If one of the field value seems to match the temperature, be sure to read
the hddtemp man page before sending a report (section REPORT). Thanks.

В 190 поле цифра 30, что похоже на правду.
Добавим наш SSD диск в базу командой из под root:

echo '"Samsung SSD 860 EVO 500G" 190 C "Samsung SSD 860 EVO 500G"' >> /etc/hddtemp.db

Проверим:

sudo hddtemp -n /dev/sda
30

Из указанных примеров видно, что для доступа к жестким дискам нужен рутовый аккаунт.
По причине этого мы имеем ограничение по использованию. Например с Zabbix.
Но hddtemp может работать как демон с доступом по TCP для любого пользователя.
Для запуска демона прежде всего нужно определится какие именно диски он будет опрашивать.
По умолчанию опрос делается первого диска sda, но мы можем это изменить, меняем конфигурацию:

sudo systemctl edit hddtemp.service
[Service]
ExecStart=
ExecStart=/usr/sbin/hddtemp -d /dev/sdc -l 127.0.0.1 -p 7634

Перезапустим:

sudo systemctl restart hddtemp.service

Проверим:

telnet localhost 7634
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
|/dev/sda|WDC WD2000FYYZ-01UL1B2|33|C|Connection closed by foreign host.

Выводит, но пользоваться этим неудобно, поэтому создадим простой скрипт:

vi my_hddtemp.sh
#!/bin/sh
myDisk=`echo "" | netcat -n 127.0.0.1 7634 |sed 's/|//m' | sed 's/||/ \n/g' | awk -F'|' '{print $3}'`
echo $myDisk

Делаем его исполняемым:

chmod +x my_hddtemp.sh

Запускаем:

./my_hddtemp.sh
33

На этом все.

Рейтинг
( 1 оценка, среднее 5 из 5 )
Понравилась статья? Поделиться с друзьями:
Добавить комментарий

:) :D :( :o 8O :? 8) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.