Bash script zur Auswertung einer Datei?

3 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Hallo

Habe ein Script, dass mir in eine Log-Datei alle 10 Sekunden ein Zeichen (0 oder 1) in diese Datei überschreibt.

Also enthält die Datei immer nur:

0

oder eben

1
OK.Ist der Inhalt der Log-Datei = 0, dann Befehl A ausführen. (shutdown)
Ist der Inhalt der Log-Datei = 1, dann Befehl B ausführen. (reboot)

Du meinst sowas:

#!/bin/bash

if [ $(cat logfile) == "0" ];
  then
    halt
elif [ $(cat logfile) == "1" ];
  then
    reboot
elif [[ $(cat logfile) != "0-1" ]];
  then
    echo "Fehler, der Wert ist weder 1 noch 0"
fi

Damit wird getan was Du möchtest wenn Eins oder Null darin steht un d wenn irgend etwas anderes darin steht erscheint eben eine Fehlermeldung.

Linuxhase

Hallo Linuxhase,

vielen Dank für Deine hilfreiche Lösung. Genau das was ich für die Abbeit gesucht habe. Klasse! Noch einen schönen Tag.

0
@Leonie1605

@Leonie1605

Genau das was ich für die Abbeit gesucht habe.

Aber wie guneterhalt bereits angemerkt hat wird das System dann quasi immer neu Starten wenn Du es verwendest.

Linuxhase

0

ist ja eine schöne Aufgabe.

Wenn da aber nur 0 oder 1 drin stehen, dann hast du wenig Freude mit dem System, denn das läuft doch praktisch nie. Nach 30 Sekunden wird er entweder runter gefahren oder er bootet neu. Wo bleibt dann Zeit um zu arbeiten?

Wenn das wirklich so sein soll, dann brauchst du auch nur eine Datei anlegen (touch Datei), um zu rebooten, oder sie zu löschen (rm Datei) , um den Computer runter zu fahren.

Hallo guenterhalt

Danke für Deine Antwort, da hast Du natürlich Recht. Die auszuführenden Befehle habe ich als Beispiel schlecht gewählt und sollten nur stellvertretend sein für unterschiedliche Aktionen die gestartet werden sollen.

0
@Leonie1605

das würde ich dann einfacher machen.

für "1" : touch /tmp/__eins

für "0": rm /tmp/__eins ( oder gar nichts )

Auswertung:

if [ -f /tmp/__eins ] 
then
<aktion-für "1" > 
rm /tmp/__eins
else
 <aktion-für "0" >
fi
0

Soll die Log-Datei immer nur aus 1 oder 0 bestehen, oder wird es angehängt? Ist 0/1 auf einer einzelnen Zeile oder steht davor ein Zeitstempel?

Der Befehl zum shutdown heißt /sbin/shutdown -h now

zum Reboot /sbin/shutdown -r now

Wenn Shutdown bei deiner Distri in /usr/sbin/ steht, den Pfad anpassen.

Hallo flaglich,

Danke für den Tipp und Hinweis.

ja richtig, es wird immer nur ein Zeichen (1 oder 0) in diese Datei überschrieben und nicht angehängt. Die Datei besteht aus nur einer Zeile, ohne Datumsstempel.

mit weihnachtlichen Grüßen

0

Was möchtest Du wissen?