Abfrage ob Backup zwischen Servern stattgefunden hat

Begonnen von DerFrickler, 07 Mai 2015, 23:10:34

Vorheriges Thema - Nächstes Thema

Hollo

Hmm,
ich sehe zumindest einen Unterschied zwischen meinem und Deinem Code...
vor den Optionen user, password und auth sind Doppelstriche -- , kein Einzelstrich -  !

Entweder ist es genau das, woran er sich stört, oder Du arbeitest auf beiden Systemen mit unterschiedlichen Zeichensätzen;
und Deine gewählete User/Password-Kombination ergibt beim Konvertieren was anderes.
An so einem Sonderzeichen im Password habe ich auch mal lange gesucht.

Ich glaube aber eher an das erste.
FHEM 6.x auf RPi 3B Buster
Protokolle: Homematic, Z-Wave, MQTT, Modbus
Temp/Feuchte: JeeLink-Clone und LGW mit LaCrosse/IT
sonstiges: Linux-Server, Dreambox, "RSS-Tablet"

DerFrickler

#16
gut aufgepasst! Ich habe diese Probleme immer wieder wenn ich im Editor auf dem Mac Arbeite. Meistens muss ich im Anschluss das ein oder andere noch korrigieren, insbesondere bei den Anführungsstrichen. Das Abändern von zwei einzelstrichen zu einem einzelnen ist jetzt mal was neues.

Ich werde es dann später mal auf dem Server direkt ändern.

Danke!

Nachtrag: Mein TextEdit auf dem Mac macht aus zwei aufeinanderfolgenden "-" ein einzelnes.

DerFrickler

gut es funktioniert soweit klasse, kann man das jetzt auch für variable Werte umsetzen?


#!/bin/bash
LOGFILE=/mnt/Daten/Systemdienste/info.log
echo "loadCycleCheck.sh at" $(date) >> $LOGFILE
echo "ada0" >> $LOGFILE
smartctl -a /dev/ada0 | grep "Model Family" >> $LOGFILE
smartctl -a /dev/ada0 | grep "Serial Number" >> $LOGFILE
echo "ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE" >> $LOGFILE
smartctl -a /dev/ada0 | grep Start_Stop_Count >> $LOGFILE
smartctl -a /dev/ada0 | grep Power_On_Hours >> $LOGFILE
smartctl -a /dev/ada0 | grep Power_Cycle_Count >> $LOGFILE
smartctl -a /dev/ada0 | grep Load_Cycle_Count >> $LOGFILE
smartctl -a /dev/ada0 | grep Temperature_Celsius >> $LOGFILE

ergibt folgende Ausgabe:

loadCycleCheck.sh at Mon May 18 20:45:00 CEST 2015
ada0
Model Family:     Western Digital Red
Serial Number:    WD-WXA1E54THR16
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  4 Start_Stop_Count        0x0032   100   100   000    Old_age   Always       -       52
  9 Power_On_Hours          0x0032   100   100   000    Old_age   Always       -       387
12 Power_Cycle_Count       0x0032   100   100   000    Old_age   Always       -       52
193 Load_Cycle_Count        0x0032   200   200   000    Old_age   Always       -       50
194 Temperature_Celsius     0x0022   117   097   000    Old_age   Always       -       30
[/code]

die rot markierten Daten würden mich interessieren. Diesen würden dann nicht mehr in ein Logfile geschrieben, sondern von fhem ausgewertet.

in etwa so
wget -O /dev/null "http://<IP>:8083/fhem?cmd.FreeNASServer=set%20FreeNASServer.HDD0.Name%20<der Wert: ada0>" --user=<user> --password=<pass> --auth-no-challenge
wget -O /dev/null "http://<IP>:8083/fhem?cmd.FreeNASServer=set%20FreeNASServer.HDD0.Modell%20<der Wert von Model Family: Western Digital Red>" --user=<user> --password=<pass> --auth-no-challenge
wget -O /dev/null "http://<IP>:8083/fhem?cmd.FreeNASServer=set%20FreeNASServer.HDD0.Seriennummer%20<der Wert von Serial Number: WD-WXA1E54THR16>" --user=<user> --password=<pass> --auth-no-challenge
wget -O /dev/null "http://<IP>:8083/fhem?cmd.FreeNASServer=set%20FreeNASServer.HDD0.StartStopCount%20<der Wert von Start_Stop_Count: 52>" --user=<user> --password=<pass> --auth-no-challenge
u.s.w.

Kann man die Kombi smartctl und grep im Skript so umbauen, dass man die einzelnen werte extrahieren und an fhem übergeben kann?

gleiches dann noch für folgende Abfrage:

#!/bin/bash

LOGFILE=/mnt/Daten/Systemdienste/info.log

echo "temperatureCPU.sh at" $(date) >> $LOGFILE
sysctl -a | grep temperature >> $LOGFILE
echo "" >> $LOGFILE


ergibt

temperatureCPU.sh at Mon May 18 20:47:00 CEST 2015
dev.cpu.0.temperature: 38.0C
dev.cpu.1.temperature: 38.0C
dev.cpu.2.temperature: 38.0C
dev.cpu.3.temperature: 38.0C
dev.cpu.4.temperature: 40.0C
dev.cpu.5.temperature: 40.0C
dev.cpu.6.temperature: 34.0C
dev.cpu.7.temperature: 34.0C

auch hier währe es interessant die Werte zu extrahieren und nach fhem zu übertragen

Vielen Dank!

Hollo

Wozu braucht man sowas... der smart-Wert der Platte ist entweder gut oder sie ist im Ar*** .   ;)
Und 387 Stunden ist ja mal gar nix.   ;D

Egal, Du müsstest diese Umsetzung dann in Deinem Script machen.
Ich würde mal in die Richtung probieren...

- die einzelnen "Variablen" in ein Array
- dann eine Schleife, die den Aufruf und die wget-Weitergabe der "Werte" erledigt
- in der Schleife werden dann die einzelnen "Variablen" durchgetickert

Alternativ die Werte der Reihe nach in eine Datei schieben, nach FHEM transferieren, und dort wieder der Reihe nach in Readings schieben
FHEM 6.x auf RPi 3B Buster
Protokolle: Homematic, Z-Wave, MQTT, Modbus
Temp/Feuchte: JeeLink-Clone und LGW mit LaCrosse/IT
sonstiges: Linux-Server, Dreambox, "RSS-Tablet"

DerFrickler

Zitat von: Hollo am 19 Mai 2015, 09:40:11
Wozu braucht man sowas... der smart-Wert der Platte ist entweder gut oder sie ist im Ar*** .   ;)
um den Verfall zu beobachten
Zitat von: Hollo am 19 Mai 2015, 09:40:11
Und 387 Stunden ist ja mal gar nix.   ;D
Die ist ja auch noch neu, die zweite Platte im RAID Verbund hat da schon ganz andere Werte

Zitat von: Hollo am 19 Mai 2015, 09:40:11
Egal, Du müsstest diese Umsetzung dann in Deinem Script machen.
Ich würde mal in die Richtung probieren...

- die einzelnen "Variablen" in ein Array
- dann eine Schleife, die den Aufruf und die wget-Weitergabe der "Werte" erledigt
- in der Schleife werden dann die einzelnen "Variablen" durchgetickert

Alternativ die Werte der Reihe nach in eine Datei schieben, nach FHEM transferieren, und dort wieder der Reihe nach in Readings schieben

Ich habe mir das wie folgt vorgestellt:
smartctl -a /dev/ada0 | grep "Model Family" >> $LOGFILE
dann das wget..

smartctl -a /dev/ada0 | grep "Serial Number" >> $LOGFILE
dann das wget

smartctl -a /dev/ada0 | grep Start_Stop_Count >> $LOGFILE
dann das wget

u.s.w.

jetzt fehlt halt nur noch das Extrahieren der Werte, bzw das Schreiben der Werte in Variablen, die man dann im wget nutzen kann.

welcher Befehl in Kombination mit smartctl und grep ist dafür geeignet?

gero

bash arrays, cut, sed, awk, ...  es gibt viele Möglichkeiten.
Falls du es nicht hinbekommst, kann ich dir morgen weiterhelfen. Ist vom Handy aus etwas mühsam.

Gruß,
Gero
Odroid C1 - CULV3-868, JeeLink
16 x TX 29 DTH
MAX!: 15x Heizkörperthermostat+, 2x Wandthermostat, 14x Fenserkontakt, 1x Ecotaster
FS20 S4A, FS20IRF, BSB-Heizungssteuerung über Atmega2560
Z-Wave: ZME_UZB1, Fibaro Wall Plug + Motion Sensor

gero

Zitat von: DerFrickler am 19 Mai 2015, 21:53:13
smartctl -a /dev/ada0 | grep "Model Family" >> $LOGFILE
dann das wget..

smartctl -a /dev/ada0 | grep "Serial Number" >> $LOGFILE
dann das wget

smartctl -a /dev/ada0 | grep Start_Stop_Count >> $LOGFILE
dann das wget

So, jetzt nochmal etwas ausführlicher:
In den ersten beiden Werte (Model Family und Serial Numer) sind die Werte durch einen Doppelpunkt getrennt. Also kannst du den Wert z.B. wie folgt extrahieren:

MODEL=`smartctl -a /dev/ada0 | grep "Model Family" | cut -d':' -f2 | sed 's#^[[:space:]]*\(.*\)[[:space:]]*#\1#'`
SERIAL=`smartctl -a /dev/ada0 | grep "Serial Number" | cut -d':' -f2 | sed 's#^[[:space:]]*\(.*\)[[:space:]]*#\1#'`


Bei den restlichen Werten möchtest du das letzte Feld haben. Das läßt sich z.B. so realisieren:
VALUE=`smartctl -a /dev/ada0 | grep Start_Stop_Count | gawk '{print $NF}'`


Ich hoffe, du kommst damit weiter.

Gruß,
Gero
Odroid C1 - CULV3-868, JeeLink
16 x TX 29 DTH
MAX!: 15x Heizkörperthermostat+, 2x Wandthermostat, 14x Fenserkontakt, 1x Ecotaster
FS20 S4A, FS20IRF, BSB-Heizungssteuerung über Atmega2560
Z-Wave: ZME_UZB1, Fibaro Wall Plug + Motion Sensor

DerFrickler

funktioniert super, danke! nur muss es awk und nicht gawk heissen.

Gruß!

gero

Schön, dass es funktioniert.
Nur aus Interesse:
Welche Linux-Distribution ist auf dem Server? awk ist heutzutage normalerweise ein Synonym (Link) auf eine der modernen awk Implementationen (z.B. gawk, nawk, mawk).
Auf fast allen Linuxvarianten, die ich kenne, ist awk=gawk.
Gruß,
Gero
Odroid C1 - CULV3-868, JeeLink
16 x TX 29 DTH
MAX!: 15x Heizkörperthermostat+, 2x Wandthermostat, 14x Fenserkontakt, 1x Ecotaster
FS20 S4A, FS20IRF, BSB-Heizungssteuerung über Atmega2560
Z-Wave: ZME_UZB1, Fibaro Wall Plug + Motion Sensor