• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Ausgabe interpretieren (z. B. bei Smartmontools)

Moin zusammen!
Bin gerade eifrig am "rumscripten" in meinem Paperless-Server. Und da Ihr mir gestern so fabelhaft geholfen habt, möchte ich Euch gleich wieder belästigen.

Eine ganze Menge Tools geben eine Meldung von sich, beispielsweise gibt der Befehl

sudo smartctl -H /dev/sda
folgende Meldung aus:
Code:
smartctl 7.3 2022-02-28 r5338 [x86_64-linux-6.1.0-21-amd64] (local build)
Copyright (C) 2002-22, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED
Je nach Laufwerk und dessen Zustand könnte die Meldung auch umfangreicher bzw. mit ganz anderem Inhalt ausgegeben werden.

Meine Frage ist: Wie prüft man mittels If...then in einem Script, ob in einer Ausgabe ein "Zauberwort" enthalten ist? Im konkreten Fall möchte ich feststellen können,
a) ob überhaupt eine Rückleldung erfolgt und
b) ob "PASSED" in der Meldung enthalten ist oder nicht.
 
Zuletzt bearbeitet:

susejunky

Moderator
Teammitglied
Hallo @EmmJay ,

Meine Frage ist: Wie prüft man mittels If...then in einem Script, ob in einer Ausgabe ein "Zauberwort" enthalten ist? Im konkreten Fall möchte ich feststellen können,
a) ob überhaupt eine Rückleldung erfolgt und
b) ob "PASSED" in der Meldung enthalten ist oder nicht.
normalerweise liefern Programme wie smartctl am Ende ein Ergebnis (return code), welches man in Skripten abfragen kann.

man smartctl liefert Dir detaillierte Informationen dazu, wie dieses Ergebnis zu interpretieren ist.

Und da Du anscheinen gerade dabei bist Dich in die Shell-Programmierung einzuarbeiten, hier noch etwas "Lesestoff":

Bash - Beginners guide
Advanced Bash scripting
Bash reference manual

Viele Grüße

susejunky
 
Verlasse Dich nicht zu sehr auf das Ergebnis aus Beitrag 1. Das ist so, als wenn Du einen Menschen fragst, ob er sich gesund fühlt. Nur der Hersteller des Mediums kann sagen, unter welchen Umständen das Medium etwas anderes als "PASSED" meldet.

Du brauchst einen (über einen systemd-Dienst gestarteten) Dämon namens smartd, der laufend bestimmte Parameter prüft und gegebenenfalls meldet. Beschäftige Dich auch mit man smartd.conf und dort insbesondere mit den Parametern -m und -M sowie den vermutlich in der Datei enthaltenen Kommentaren.
 

framp

Moderator
Teammitglied
Ich wuerde das auch ueber den smartd erledigen.

Meine Frage ist: Wie prüft man mittels If...then in einem Script, ob in einer Ausgabe ein "Zauberwort" enthalten ist?
Man koennte das z.B. wie folgt tun:

Bash:
#!/bin/bash

smartCtlResult="$(smartctl -H /dev/nvme0n1)"

if (( $? != 0 )); then        # check if error in smartctl
    echo "smartctl failed"
    exit 1
fi

if grep -i -q "PASSED" <<< "$smartCtlResult"; then
    echo "smartctl test passed"
    exit 0
else
    echo "smartctl test failed"
    exit 1
fi
 
Oben