Einfacher SMART-Test per script

555NASE

Patron
Joined
Mar 3, 2017
Messages
202
Moin,

ich würde gerne in regelmäßigen abständen ein sript laufen lassen das mir die SMART-Werte per mail zusendet.

so nach diesem Prinzip
Code:
 smartctl -a /dev/ada0

.....

 smartctl -a /dev/ada12


das würde ich einfach in ein .sh script packen und im FreeNas unter Aufgaben eintragen.

Oder gibt es da eine elegantere Lösung
 

honeybee

Dabbler
Joined
Feb 21, 2019
Messages
30
Hallo,

ich habe genau das am laufen und kann dir gerne mal zusenden wie das Setup bei mir aussieht.
Läuft bei mir als cronjob, aufgesetzt im FreeNAS gui und speichert die werte in Dateien die mir dann via sentmail zugeschickt werden.
Habe ich ebenso für die HDD Temperaturen laufen.
 

555NASE

Patron
Joined
Mar 3, 2017
Messages
202
Moin,

würde mich freuen wenn du mir das Script mal zukommen lassen würdest
 

honeybee

Dabbler
Joined
Feb 21, 2019
Messages
30
Also zunächst habe ich einen Cronjob der jeden Monat einmal jede HDD wie folgt testet:

smartctl -t long /dev/ada0 sowohl auch für ada1, ada2, ada3, je nachdem wie viele HDDs du hast.

Einen tag nach Abschluss des letzten Tests (Pro Test dauert so 8h) ruft ein Cronjob folgendes auf:

/root/smart.sh

Die smart.sh sieht wie folgt aus:

#! /bin/sh cp mailsmart.txt smart.txt echo "S.M.A.R.T Ergebnisse:" >> smart.txt echo "" >> smart.txt smartctl -a /dev/ada0 | awk '/# 1/{print"ada0: "$5" "$6" "$7}' >> smart.txt smartctl -a /dev/ada0 | awk '/# 1/{print $9"h (letzter Test)"}' >> smart.txt smartctl -a /dev/ada0 | awk '/Power_On/{print $10"h (Gesamtlaufzeit)"}' >> smart.txt echo "" >> smart.txt smartctl -a /dev/ada1 | awk '/# 1/{print"ada1: "$5" "$6" "$7}' >> smart.txt smartctl -a /dev/ada1 | awk '/# 1/{print $9"h (letzter Test)"}' >> smart.txt smartctl -a /dev/ada1 | awk '/Power_On/{print $10"h (Gesamtlaufzeit)"}' >> smart.txt echo "" >> smart.txt smartctl -a /dev/ada2 | awk '/# 1/{print"ada2: "$5" "$6" "$7}' >> smart.txt smartctl -a /dev/ada2 | awk '/# 1/{print $9"h (letzter Test)"}' >> smart.txt smartctl -a /dev/ada2 | awk '/Power_On/{print $10"h (Gesamtlaufzeit)"}' >> smart.txt echo "" >> smart.txt smartctl -a /dev/ada3 | awk '/# 1/{print"ada3: "$5" "$6" "$7}' >> smart.txt smartctl -a /dev/ada3 | awk '/# 1/{print $9"h (letzter Test)"}' >> smart.txt smartctl -a /dev/ada3 | awk '/Power_On/{print $10"h (Gesamtlaufzeit)"}' >> smart.txt echo "" >> smart.txt date +"Geschickt am %d.%m.%Y um %H:%M Uhr von deinem treuen NAS." >> smart.txt sendmail <deine Mailadresse> < smart.txt

Das Template mailsmart.txt sieht so aus:

Subject: NAS S.M.A.R.T Werte Content-Type: text/plain; charset=\"utf-8\"

Ich bekomme am Ende dann eine Mail die z.B. wie folgt aussieht:

S.M.A.R.T Ergebnisse:


ada0: Completed without error
59763h (letzter Test)
59869h (Gesamtlaufzeit)


ada1: Completed without error
59781h (letzter Test)
59863h (Gesamtlaufzeit)


ada2: Completed without error
58265h (letzter Test)
58323h (Gesamtlaufzeit)


ada3: Completed without error
59928h (letzter Test)
59962h (Gesamtlaufzeit)


Geschickt am 05.02.2019 um 20:00 Uhr von deinem treuen NAS

So kann ich sehen, ob der Test wirklich erst vor kurzem lief und ob er ohne Probleme durchlief.
Du kannst dir natürlich auch eine Mail mit allen SMART Werten pro HDD schicken lassen.
Mir waren das aber zu viele Zahlen.
Ich bin kein Experte und habe mir das mit viel Mühe und fail+repeat zusammengebastelt.
Ich glaube der sentmail Befehlt funktioniert out of the box, wenn du im FreeNAS gui alles dafür konfiguriert hast.
 

555NASE

Patron
Joined
Mar 3, 2017
Messages
202
Dauert der gesamte Test 8 std oder 8std pro Platte ?

Den Befehl
Code:
smartctl -t long /dev/ada0 
führst du also für jede HDD einzeld aus . Anschließend das Script, dieses aber nur einmal.

Ich könnte doch auch den "short" parameter nehmen oder ?

Speichert der smartctl -t befehl seine ausgabe automatisch schon in der smart.txt?
 

honeybee

Dabbler
Joined
Feb 21, 2019
Messages
30
Das dauert pro Platte (3TB) 8h. Du kannst auch short machen. Der long scannt allerdings die gesamte Oberfläche, was mir wichtig ist, wenn ich es nur einmal im Monat mache. Ich teste jeden 01,02,03,04 die Platten und am 05 des Monats wird die Ergebnis Mail verschickt.

Der scan Befehl speichert nichts ab. Allerdings wird automatisch in den Smart Werten der HDD ein Eintrag hinzugefügt dass der Test gemacht wurde und ob er erfolgreich war. (Weiter unten, unter den eigentlichen Smart Werten) Das ist es was mein Script neben den Laufzeiten aus der smartctl -a Ausgabe rausfiltert.

Du kannst dir wie gesagt auch die ganze Ausgabe von smartctl -a per Mail schicken lassen. Das geht erheblich einfacher, wäre etwa so:

smartctl -t short /dev/ada0 > smarttest.txt
smartctl -t short /dev/ada1 >> smartest.txt
...

(Wichtig ist >> ab dem zweiten Befehl, denn > macht die Datei leer vor dem reinschreiben. >> Hängt in der ersten freien Zeile an)

Und dann

sendmail du@web.de < smarttest.txt

Kann man auch sicher sinnig verbasteln, dass die Befehle nacheinander abgearbeitet werden, aber wie da der Syntax ist weiß ich gerade nicht.
 
Last edited:

555NASE

Patron
Joined
Mar 3, 2017
Messages
202
Alles klar.
Habe aber noch folgende probleme. Die Mail wird ohne Betreff versendet.
Die Mail ist ewig lang und alles ist doppelt und dreifach drin (alle test die bisher stattgefunden haben )
 

honeybee

Dabbler
Joined
Feb 21, 2019
Messages
30
Betreff bekommst du wenn du in die erste Zeile der txt schreibst: Subject: Blabla
Um das zu haben nutze ich mein Template.

Check Mal ob du den ersten Befehl der in die txt schreibt dies mit > tun lässt. Nicht mit >>

Oder ist deine Ausgabe von smartctl -a einfach so lang? Du kannst dir die Ausgabe mit "awk" beliebig anpassen. Ist aber Bastelei, siehe meine smart.sh :-(
 
Last edited:

555NASE

Patron
Joined
Mar 3, 2017
Messages
202
In der mailsmart.txt steht bereits das "Subject:" und trotzdem ist der Betreff leer.
Das andere problem ist bereits eledigt habe das zweite ">" entfernt.
 

honeybee

Dabbler
Joined
Feb 21, 2019
Messages
30
Wenn in deiner Datei das Subject schon drin ist wird es ja beim dem ersten Befehl der > benutzt überschrieben.

Ich nutze daher im meiner sh das
cp mailsmart.txt smart.txt

Das Template mailsmart.txt sieht so aus:

Subject: NAS S.M.A.R.T Werte Content-Type: text/plain; charset=\"utf-8\"

Versuch das auch Mal analog.
Ich weiß nicht wieso ich das den Script nicht direkt habe reinschreiben lassen, vielleicht hatte das nicht geklappt. Ist länger her.
Dann müssen alle Befehle danach nur noch >> nutzen. Das Template ist ja immer bis auf die zwei Zeilen leer.
 
Last edited:

555NASE

Patron
Joined
Mar 3, 2017
Messages
202
Glaube wir reden leicht aneinander vorbei.
folgende dateien existieren bei mir:
smart.sh mit dem Script von dir

mailsmart.txt mit folgenden inhalt:
Code:
Subject: NAS S.M.A.R.T Werte
Content-Type: text/plain; charset=\"utf-8\"


und die smart.txt - diese ist leer , da ja hier die ergebnisse reingedrückt werden.
 

honeybee

Dabbler
Joined
Feb 21, 2019
Messages
30
Das ist komisch, dann hast du ja das gleiche Setup wie ich.

Hab dir meine Files (incl Der für Temperatur) Mal angehängt.

Vielleicht liegt es ja an der Codierung oder sonstwas.

Sonst erstellt Mal zum Test einfach eine perfekte Maildatei und schick sie dir über Sendmail und teste ob der Betreff noch drin ist.
 

555NASE

Patron
Joined
Mar 3, 2017
Messages
202
Soll ich dir einfach mal mein komplettes Script senden ?
 

honeybee

Dabbler
Joined
Feb 21, 2019
Messages
30
Kannst du gerne tun.

Aber das mit der Standardmaildatei solltest du Mal testen. Wenn da dann auch kein Betreff auftaucht ist das Problem eventuell ganz woanders.
 

555NASE

Patron
Joined
Mar 3, 2017
Messages
202
Hier mal mein Script.
 

Attachments

  • smart.rar
    642 bytes · Views: 255

honeybee

Dabbler
Joined
Feb 21, 2019
Messages
30
Am Anfang überschreibst du dein Template.

echo "S.M.A.R.T Ergebnisse:" > smart.txt

Mach Mal draus:

echo "S.M.A.R.T Ergebnisse:" >> smart.txt
 

555NASE

Patron
Joined
Mar 3, 2017
Messages
202
Danach habe ich aber wieder eine Mail die immergrößer wird.

edit:
und auch mit eienm zweiten > bekomme ich kein Betreff.
 

honeybee

Dabbler
Joined
Feb 21, 2019
Messages
30
Dass deutet für mich darauf hin dass der cp Befehl nicht klappt. Denn du hast scheinbar den Subject nicht in der maildatei und die Datei wird nicht geleert wenn die sh aufgerufen wird was sie durch das ersetzen durch das Template is sollte.
 

honeybee

Dabbler
Joined
Feb 21, 2019
Messages
30
Mach Mal sendmail du@du.de < mailsmart.txt und Guck ob du eine E-Mail mit Betreff bekommst.

Wenn ja mach Mal manuell cp mailsmart.txt smart.txt und sieh dir danach die smart.txt an.

Dateiberechtigungen und Zugriffsrechte des Users der den Script ausführt sind okay? Bei mir macht alles der root.
 

555NASE

Patron
Joined
Mar 3, 2017
Messages
202
das manuelle senden hat funktioniert. Nur halt ohne Inhalt
 
Top