Update Script - Sollte FHEM Update mal wieder nicht gehen

Begonnen von GrauesHaar, 07 Februar 2015, 17:59:17

Vorheriges Thema - Nächstes Thema

GrauesHaar

Hallo Zusammen,

da ich immer wieder Probleme mit dem Update von FHEM auf meiner Fritzbox hatte, ja ich weiss man sollte diese abloesen, habe ich ein kleines Update Shell Script geschrieben.

Ok man koennte dies bestimmt auch besser schreiben, aber es funktioniert.

Da auch andere ab und an Probleme mit dem Update haben, wollte ich das Script mit euch teilen.

So nun zur Anleitung:

1.) Ausfuehren des Kommandos Update check
2.) Diese Ausgabe dann in eine Datei schreiben (diff_controls.txt)
3.) Das Script ebenfalls in eine Datei schreiben (update.sh)
4.) Das Update Verzeichnis erstellen

Bei mir liegen dann die Dateien und das Verzeichnis unter /var/media/ftp/uStor01/

5.) Wenn man in diesem Verzeichnis ist, das Script wie folgt aufrufen:

sh ./update.sh ../diff_controls.txt

Gruss
GrauesHaar

#!/bin/bash
#######################################################
#
# Update script for systems with problems during
# the fhem update command, like for the fritzbox.
# Looks like the fritzbox has not enough memory
# and the perl fhem.pl fhem.cfg update process will
# crash.
#
# Script created by GrauesHaar 2015-02-04
#
#######################################################
#
# Define some variables
#
#######################################################
Update=/var/media/ftp/uStor01/update
FHEM=/var/media/ftp/uStor01/fhem
Unused=/var/media/ftp/uStor01/fhem/unused

cd $Update
###############
# Get Updates
###############
while read line
do
    name=$line
    path=${name//UPD /}
    directory="$(dirname "$path ")"
    mkdir -p $directory
    cd $directory
    URL=${name//UPD /wget http://fhem.de/fhemupdate/}
    $URL
    cd $Update
done < $1
cd $Update/FHEM
wget http://fhem.de/fhemupdate/controls_fhem.txt
cd $Update
echo "Files received, press any key to continue"
read -n1 -s
cp -R * $FHEM
rm -R *

#####################
# Move unused files
#####################
grep MOV $FHEM/FHEM/controls_fhem.txt | while read line
do
    name=$line
    path=${name//MOV /}
    path=${path// unused/}
    directory="$(dirname "$path ")"
    mkdir -p $Unused/$directory
    mv $FHEM/$path $Unused/$directory
done

echo "Update done - please do a shutdown restart in FHEM"

polysix

Hallo Graus Haar,

bei mir kommt die Fehlermeldung:
./update.sh: 28: ./update.sh: Bad substitution

Die Ausgabe mit Debug:
pi@raspberrypi /opt $ sh -vx ./update.sh ../diff_controls.txt
#!/bin/bash
#######################################################
#
# Update script for systems with problems during
# the fhem update command, like for the fritzbox.
# Looks like the fritzbox has not enough memory
# and the perl fhem.pl fhem.cfg update process will
# crash.
#
# Script created by GrauesHaar 2015-02-04
#
#######################################################
#
# Define some variables
#
#######################################################
Update=/opt/update
+ Update=/opt/update
FHEM=/opt/fhem
+ FHEM=/opt/fhem
Unused=/opt/update/fhem/unused
+ Unused=/opt/update/fhem/unused

cd $Update
+ cd /opt/update
###############
# Get Updates
###############
while read line
do
    name=$line
    path=${name//UPD /}
    directory="$(dirname "$path ")"
    mkdir -p $directory
    cd $directory
    URL=${name//UPD /wget http://fhem.de/fhemupdate/}
    $URL
    cd $Update
done < $1
+ read line
+ name=UPD ./CHANGED
./update.sh: 28: ./update.sh: Bad substitution


Läuft auf RasPi
Verzeichnisse sind wie folgt eingestellt:
Update=/opt/update
FHEM=/opt/fhem
Unused=/opt/update/fhem/unused
Die update.sh und diff_controls.txt liegen in /opt
Die diff_controls.txt beginnt:
UPD ./CHANGED
UPD ./configDB.pm
UPD ./fhem.pl
UPD FHEM/00_CUL.pm
UPD FHEM/00_HMLAN.pm
UPD FHEM/00_HXB.pm
...
RasPi B, Wheezy, Fhem 5.7, Perl v5.14.2 , HM-LAN
HM-CC-RT-DN,HM-ES-PMSw1-Pl,HM-LC-Bl1PBU-FM,HM-LC-SW1-PL2,HM-LC-Sw1PBU-FM,HM-Sen-MDIR-O

GrauesHaar

Probier doch mal folgendes:

chmod a+x update.sh

Dann fuehrst du das ganze wie folgt aus:

./update.sh ../diff_controls.txt

Koennte sein das der mit den Shells durcheinander kommt. BASH und SH

polysix

Das scheint zu helfen.
Das Script würde durchlaufen.
Ich habe aber wohl noch Rechteprobleme. Das Script kann keine Unterverzeichnis in update anlegen. Werde ich mir heute Abend näher ansehen.

Habe noch mal manuell upgedatet und anschließend ein wget http://fhem.de/fhemupdate/controls_fhem.txt in FHEM ausgeführt. Danach waren alle Updates OK. Löst allerdings die Verbindungsabbrüche nicht. Die treten auch bei manuellem Update auf.
Daher würde ich dein Script vorziehen. Vorab vielen Dank.

Gruß
Bernd
RasPi B, Wheezy, Fhem 5.7, Perl v5.14.2 , HM-LAN
HM-CC-RT-DN,HM-ES-PMSw1-Pl,HM-LC-Bl1PBU-FM,HM-LC-SW1-PL2,HM-LC-Sw1PBU-FM,HM-Sen-MDIR-O

GrauesHaar

Das freut mich das ich dir damit helfen konnte.

Sollte es noch jemand hilfreich finden, oder Probleme oder aber auch Verbesserungen haben, bitte einfach in den Thread posten.

Angenehme Arbeitswoche

frank_41

Hallo, ich wollte auch berichten, dass dein script mir beim update geholfen hat.  ;D
Direkt aus fhem ging update nicht mehr. Ich habe fritzbox 7390 und Kabel Deutschland Anschluss.
Kann denn mal jemand sagen, woran das nun liegen soll ??
Ich habe sonst keine (sichtbaren) Probleme mit Internet ??
Gruss
Frank
Raspberry Pi 3
RFXCOM_RFXtrx433
V 1.62 nanoCUL433
Jeelink LaCrosse
Jeelink PCA301.CUL_HM,Conbee, deCONZ

Puschel74

Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

Boernie

Hallo,

ich hatte gehofft selbt mit FHEM klarzukommen. Jetzt komme ich jedoch nicht weiter und habe mich deshalb hilfesuchend in diesem Forum angemeldet.

Als Neuling/Anfänger habe ich FHEM auf einem Raspberry installiert um damit mit Homematic Komponenten zuerst die Heizung zu steuern und später weiter auszubauen. Dafür gibt es ja gut funktionierende Anleitungen im Weg.

Leider habe ich auch das Timeout Problem beim Update von FHEM. Auch bei mir funktioniert FHEM nach dem fehlerhaften Update nicht mehr  :-[
Mein Internetzugang ist über Unitymedia mit Fritzbox Cable 6340.

Gibt es denn schon neue Erkentnisse oder sogar schon eine dauerhafte Lösung zu diesem Problem (timeout beim Update)?
Im FHEMwiki habe gelesen, dass es noch das Kommando "update force" gibt. Ist das evtl. einen Versuch wert um ein Update ohne diese Timeout Unterbrechung durchzuführen.?

Vielen Dank im Voraus.

Boernie

#8
habe jetzt das Script von GrauesHaar in Raspbian mit root Rechten ausgeführt.

Bei den einzelnen Updates erscheint immer folgendes:

--2015-10-11 11:34:03--  http://%0D/
Resolving \r (\r)... failed: Name or service not known.
wget: unable to resolve host address `\r'
FINISHED --2015-10-11 11:34:03--
Total wall clock time: 0.07s
Downloaded: 1 files, 83 in 0s (2.11 MB/s)
--2015-10-11 11:34:03--  http://fhem.de/fhemupdate/www/jscolor/ct_background.svg
Resolving fhem.de (fhem.de)... 82.165.184.33
Connecting to fhem.de (fhem.de)|82.165.184.33|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 373 [image/svg+xml]
Saving to: `ct_background.svg'

100%[======================================>] 373         --.-K/s   in 0s



danach:

Files received, press any key to continue
mv: cannot stat `/var/media/ftp/uStor01/fhem/www/pgm2/fhemweb_multiple.js': No such file or directory



Nach "shutdown restart" in FHEM stehen nun nach "update ceck" noch immer alle Dateien zum update unverändert dort.
Kann mir jemand helfen? Ich weiss wirklich nicht mehr weiter!

Vielen Dank im Voraus!