System ist Debian Wheezy mit Perl v5.14.2
Ziel ist es die Temperatur von X angegebenen Devices / Festplatten auszuwerten und die Ausgabe so darzustellen, dass sie von Cacti verarbeitet werden kann.
Als Vorbereitung muss smart mittels „# aptitude install smartmontools“ installiert werden
Script Get-HDD_Temp.pl
Dies ist ein Perl Script zum Abfragen der Temperatur von X Festplatten mittels SMART. Es ist definitiv noch aus- und umbaufähig, aber das war so in kurzer Zeit realisierbar. Die Verwendung erfolgt auf eigene Gefahr.
#!/usr/bin/perl # by taste-of-it.de # erstellt am 16.10.2013 # Version 2.0 # auslesen der smartwerte hdd temp einer oder mehrerer disks # es wird der smartwert 190 oder 194 und name des device z.b. sda erwartet # es werden keine fehler abgefangen # mögliche abfragen - wenn 194 nicht vorhanden dann 190 nehmen # smartctl 190 Airflow_Temperature_Cel # smartctl 194 Temperature_Celsius use strict; #use warnings; # kontrolle ob args vorhanden sind if ( @ARGV < 1) { print "Bitte den SMART-Wert eingeben und ein Device z.B. 190 sda=/dev/sda.\n"; exit (1); }else{ my $aSize = @ARGV; # Anzahl der Elemente im Array my $values; my $smartname; # Smartname der Abfrage my $count = 0; # array der Argumente abfragen for my $element (@ARGV) { # prüfen ob das ARG 0 und somit nicht vorhanden ist if ($element =~ /^[0]+$/) { }else{ # das ARG ist nicht Null und kann somit ausgewertet werden if ($element =~ /^[0-9]+$/) { if ($element == 190) { $smartname = 'Airflow_Temperature_Cel'; }elsif ($element == 194) { $smartname = 'Temperature_Celsius'; } }else { my $spacer; # das naechste Element im Array pruefen, wenn 0 dann kein Leerzeichen if (@ARGV[$count+1] =~ /^[0]+$/){ $spacer = ""; } else { $spacer = " "; } # holen der hdd temp aus spalte 10(raw) werte und string bauen -> name:value $values .= $element.":".int(`smartctl -A /dev/$element | awk -v pattern=$smartname '\$0 ~ pattern {print \$10}'`).$spacer; } } $count++; } # Ausgabe der Werte print $values; }
Run Get-HDD_Temp.pl:
perl get-hdd_temp.pl 194 sda sdb
Ausgabe Get-HDD-Temp.pl:
sda:46 sdb:44
Hinweis – Cacti erfordert es wenn mehr als eine Rückgabe vorhanden ist zwischen diesen ein Whitespace / Leerzeichen zu setzen. Die Werte selbst werden mittels Doppelpunkt getrennt wobei der erste der Name ist und der folgende der Wert.Deshalb sieht die Formatierung entspr. aus.
Interessiert in verschiedenste IT Themen, schreibe ich in diesem Blog über Software, Hardware, Smart Home, Games und vieles mehr. Ich berichte z.B. über die Installation und Konfiguration von Software als auch von Problemen mit dieser. News sind ebenso spannend, sodass ich auch über Updates, Releases und Neuigkeiten aus der IT berichte. Letztendlich nutze ich Taste-of-IT als eigene Dokumentation und Anlaufstelle bei wiederkehrenden Themen. Ich hoffe ich kann dich ebenso informieren und bei Problemen eine schnelle Lösung anbieten. Wer meinen Aufwand unterstützen möchte, kann gerne eine Tasse oder Pod Kaffe per PayPal spenden – vielen Dank.
Hallo,
und warum nicht? Es ist zwar schnell geschrieben und ich bin bei weitem nicht der Perl-Pro, aber für meine Zwecke reichts. Was fehlt oder könnte besser gemacht werden ;)?
finds nich so dolle xD