Опять про 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
На этом все.