Programas utilizados:
- hddtemp
- kdialog
- shell script (bash)
- cron (agendador de tarefas do Linux)
- sudo
Conhecimento exigido do usuário:
- saber usar o vi, pelo menos o mínimo necessário para editar o crontab
(ou usar uma ferramenta com "interface gráfica" como o kcron) e editar o /etc/sudoers.
- saber usar a ferramenta de instalação de pacotes da sua distro para instalar o hddtemp.
- saber instalar um script em /usr/local/bin e dar permissão de execução ao mesmo.
- saber editar o shell script e configurar o path do kdialog na sua distro,
assim como alterar o script para detectar HDs SCSI ou SATA, caso use algum.
1 - hddtemp
http://www.guzu.net/linux/hddtemp.php
Provavelmente você achará pacotes prontos para qualquer distro,
então use a ferramenta de instalação de pacotes da mesma.
Exemplos:
No Kurumin ou Debian instale com o comando apt-get install hddtemp
No Gentoo instale com o comando emerge hddtemp
etc
Se optar pela compilação baixe aqui o código-fonte (230K).
Mastigado:
su
cd /etc
wget -c http://www.guzu.net/linux/hddtemp.db
exit
cd $HOME
wget -c http://www.guzu.net/files/hddtemp-0.3-beta15.tar.bz2
tar -xjvf hddtemp-0.3-beta15.tar.bz2
cd hddtemp-0.3-beta15
./configure --with-db-path=/etc/hddtemp.db
make
su
make install
2 - kdialog
Faz parte do KDE (kdebase). Será usado para mostrar a mensagem de alerta.
Pode ser substituído pelo Xdialog, Gdialog ou Zenity caso não use o KDE.
3 - Configurando o sudo
Use o comando visudo, como root, para editar o /etc/sudoers.
No exemplo abaixo permitimos que os usuários do grupo wheel
executem o hddtemp com o sudo sem digitar senha:
%wheel ALL=(ALL) NOPASSWD: /usr/sbin/hddtemp
4 - shell script (bash)
#!/bin/bash
# Path do hddtemp
hddtemp=/usr/sbin/hddtemp
# Path do kdialog no Gentoo.
dialog=/usr/kde/3.5/bin/kdialog
# também pode ser usado o Xdialog
#dialog=/usr/bin/Xdialog
# Limite de temperatura ( em °C) para que o script dê o alarme
limite=40
# Ícone da janelinha. Se for Xdialog tem que ser xpm
icon=/usr/kde/3.5/share/icons/default.kde/32x32/actions/messagebox_warning.png
# detecta os HDs
detect_hds () {
for i in $(ls /proc/ide | grep hd); do
tipo=`cat /proc/ide/$i/media`
echo "$i $tipo"| grep disk | awk '{print $1}' ;
done
}
# verifica se a temperatura ultrapassou o limite
for i in $(detect_hds); do
thda=`sudo $hddtemp -n /dev/$i`
if [ "$thda" -ge "$limite" ]; then
# se for usar o xdialog, por exemplo, retire a opção --caption
$dialog --icon $icon --title "hdmonitor" --caption "Alerta!" --msgbox "A temperatura de /dev/$i ultrapassou o limite de $limite °C." 15 0
fi
done
5 - cron (agendador de tarefas do Linux)
Para editar o crontab do usuário e adicionar uma tarefa usamos o comando crontab -e .
Neste exemplo agendamos para que o script (que chamamos de hdmonitor e salvamos em /usr/local/bin)
seja executado de 5 em 5 minutos. Caso a temperatura ultrapasse
o limite configurado no script a janelinha com o alerta aparecerá.
0-59/5 * * * * DISPLAY=":0.0" /usr/local/bin/hdmonitor
Screenshot do alerta:
Claro que eu tive que diminuir o limite de temperatura para gerar o alerta
porque os HDs aqui "tão tudo geladin". :mrgreen: