Firmware Check Funktioniert nicht richtig (Email benachrichtigung)

devildevil3

Mitglied
Mitglied seit
28 Feb 2006
Beiträge
386
Punkte für Reaktionen
0
Punkte
16
Hallo, habe mal vor einiger Zeit ein "Script" gefunden was bei einen Reboot auf eine neue Firmwareversion überprüft.

Code:
# write firmware check script
cat > /var/tmp/checkfw.sh << 'ENDCHECKFW'
#!/bin/sh

fw_path="ftp://ftp.avm.de/fritz.box/fritzbox.fon_wlan_7270/firmware/deutsch"
from="[email protected]"
to="[email protected]"
mailserver="mail.gmx.de"
mailuser="[email protected]"
mailpassword="XXXXX"

cd /var/tmp

# check daily
while [ 1 ]
do
  # installed version?
  CURRENT_VERSION=`/etc/version`
  # available version?
  ONLINE_VERSION=`wget -O - ${fw_path}/info.txt | grep 'Version' | grep ':' | sed -e '{s/Version//g;s/ //g;s/://g;}'`
  # last reported version
  if [ -f version_reported ]
  then
    ONLINE_VERSION_REPORTED=`cat ./version_reported`
  else
    ONLINE_VERSION_REPORTED='${CURRENT_VERSION}'
  fi
  # report new firmware if not yet reported
  if [ "${ONLINE_VERSION}" = "${ONLINE_VERSION_REPORTED}" ]
  then
    echo "firmware already reported"
  else
    # create mail
    echo "Installierte Version: ${CURRENT_VERSION}" > ./message.txt
    echo "Verfügbare Version: ${ONLINE_VERSION}" >> ./message.txt
    echo "" >> ./message.txt
    echo "Die neue Firmware steht unter ${fw_path} zum Download bereit." >> ./message.txt
    # send mail
    mailer -s "Neue Firmware für Ihre Fritz!Box 7270 verfügbar" -f "${from}" -t "${to}" -m "${mailserver}" -a "${mailuser}" -w "${mailpassword}" -i ./message.txt
    echo "${ONLINE_VERSION}" > ./version_reported
  fi
  sleep 86400
done

ENDCHECKFW

# make it executable
chmod +x /var/tmp/checkfw.sh
/var/tmp/checkfw.sh &

Das Problem ist ich erhalte Emails wenn ich eine neuere Version installiert habe als aktuell bei AVM auf dem Server ist (Beta Firmwares) und ich erhalte Emails wenn ich die gleiche Firmware draufhabe wie bei AVM auf dem Server liegt, warum auch immer

Diese Zeilen müsste das doch verhindern?

Code:
if [ -f version_reported ]
  then
    ONLINE_VERSION_REPORTED=`cat ./version_reported`
  else
    ONLINE_VERSION_REPORTED='${CURRENT_VERSION}'
  fi
  # report new firmware if not yet reported
  if [ "${ONLINE_VERSION}" = "${ONLINE_VERSION_REPORTED}" ]
  then
    echo "firmware already reported"
  else

Kenne mich leider mit dieser Sprache nicht ganz aus.

Weiß jemand wie man diesen Fehler wegbekommt, bzw weiß den Original Thread noch, finde diesen nicht mehr.

LG
 
Zuletzt bearbeitet:
Führ das Skript mal mit "sh -x namedavon.sh" aus, dann siehst du was nicht stimmt
 
Hallo, das geht eben leider nicht zu leicht, da es in der debug.cfg drinnen ist, habe übrigens die Seite Gefunden, das Script wurde mit Hilfe von The Construkt erstellt.

Ist zwar für die 7170 geht aber mit der 7270 auch in dem mans eben anpasst.

Wollte das Script nun extern ausführen

Habe dazu folgendes in die debug cfg geschrieben,

Code:
# make checkfw executable
chmod +x /var/media/ftp/USB-FlashDisk-01/Modifikationen/Zusatzfunktionen/Firmwarecheck/checkfw.sh
die checkfw.sh enthält nun dieses

Code:
fw_path="ftp://ftp.avm.de/fritz.box/fritzbox.fon_wlan_7270/firmware/deutsch"
from="[email protected]"
to="[email protected]"
mailserver="mail.gmx.de"
mailuser="[email protected]"
mailpassword="XXXXX"

cd /var/tmp

# check daily
while [ 1 ]
do
  # installed version?
  CURRENT_VERSION=`/etc/version`
  # available version?
  ONLINE_VERSION=`wget -O - ${fw_path}/info.txt | grep 'Version' | grep ':' | sed -e '{s/Version//g;s/ //g;s/://g;}'`
  # last reported version
  if [ -f version_reported ]
  then
    ONLINE_VERSION_REPORTED=`cat ./version_reported`
  else
    ONLINE_VERSION_REPORTED='${CURRENT_VERSION}'
  fi
  # report new firmware if not yet reported
  if [ "${ONLINE_VERSION}" = "${ONLINE_VERSION_REPORTED}" ]
  then
    echo "firmware already reported"
  else
    # create mail
    echo "Installierte Version: ${CURRENT_VERSION}" > ./message.txt
    echo "Verfügbare Version: ${ONLINE_VERSION}" >> ./message.txt
    echo "" >> ./message.txt
    echo "Die neue Firmware steht unter ${fw_path} zum Download bereit." >> ./message.txt
    # send mail
    mailer -s "Neue Firmware für Ihre Fritz!Box 7270 verfügbar" -f "${from}" -t "${to}" -m "${mailserver}" -a "${mailuser}" -w "${mailpassword}" -i ./message.txt
    echo "${ONLINE_VERSION}" > ./version_reported
  fi
  sleep 86400
done

Aber es kommt dann nur noch Fehler..

Code:
 chmod +x /var/media/ftp/USB-FlashDisk-01/Modifikationen/Zusatzfunktionen/Firmwarecheck/checkfw.sh
# sh -x /var/media/ftp/USB-FlashDisk-01/Modifikationen/Zusatzfunktionen/Firmwarecheck/checkfw.sh
+ fw_path=ftp://ftp.avm.de/fritz.box/fritzbox.fon_wlan_7270/firmware/deutsch
+ [email protected]
+ [email protected]
+ mailserver=mail.gmx.de
+ [email protected]
+ mailpassword=xxxxxx
+
/var/media/ftp/USB-FlashDisk-01/Modifikationen/Zusatzfunktionen/Firmwarecheck/ch: not foundine 1:
+ cd /var/tmp
/var/media/ftp/USB-FlashDisk-01/Modifikationen/Zusatzfunktionen/Firmwarecheck/checkfw.sh: cd: line 1: can't cd to /var/tmp
+
/var/media/ftp/USB-FlashDisk-01/Modifikationen/Zusatzfunktionen/Firmwarecheck/ch: not foundine 1:
/var/media/ftp/USB-FlashDisk-01/Modifikationen/Zusatzfunktionen/Firmwarecheck/checkfw.sh: line 44: syntax error: end of file unexpected (expecting "then")
#

Ich finde wenn ich ein USBStick immer dranhabe kann das Skript dann ja auch dort immer bleiben und nicht immer erst erzeugt werden.

Ich hoffe mir kann jemand helfen.

Grüße
 
Sehr komische Fehler sind das. Kann es sein dass in der Datei Dos/Windows Zeilenumbrüche sind?
 
hätte ich auch gedacht, aber noch nie Probleme gahbt (benutze Notepad2), aber dennoch Vi mal versucht, keine komisches Zeichen gesehen.

Ich häfte die Datei einfach mal an.

Vielen Dank schonmal.

Grüße
 

Anhänge

  • checkfw.sh.txt
    1.3 KB · Aufrufe: 7
Probier doch mal Notepad++ :rolleyes:
Unter "Sprachen" einfach "shell" auswählen, und gut is.

Joe
 

Anhänge

  • checkfw.sh.txt.jpg
    checkfw.sh.txt.jpg
    43.2 KB · Aufrufe: 7
Zuletzt bearbeitet:
Ist durchs Forum passiert, bei mir ist es Fehlerfrei...

Habe mir auch gerade Notepad++ installiert, keine Fehler sichtbar.

Edit

Gerade versucht, textdatei geladen mit Notepad++ aufgemacht=>auf Shell umgestellt=>Fehlerfrei, warum werden bei dir diese schwarzen Blöcke angezeigt?



Grüße
 
Zuletzt bearbeitet:
Die schwarzen Balken sind die Symbole für CR und LF.

Dann hast du wohl unter Einstellungen Einstellungen Neu/Offnen/Speichern auf UTF-8 und UNIX noch nicht eingestellt.
Und unter Ansicht sollten die Haken bei alle Zeichen anzeigen, Einzüge anzeigen und Zeilenumbruch gesetzt sein.

Sorry

Joe
 
Zuletzt bearbeitet:
also sind die schwarzen balken ja nicht schlechtes?!
Sind ja Zeilenumbrüche

habs mal gepsiechert und versucht, fehler bleibt dennoch bestehen :(
 
Nein, da hast du was falsch verstanden.

Damit die Datei auch fehlerfrei auf der Box ausgeführt werden kann, dürfen die "Zeilenumbrüche" nur aus LF bestehen (NICHT CR+LF).

Du musst also alle CR-Einträge aus dem Script entfernen!

Joe
 

Anhänge

  • Notepad.jpg
    Notepad.jpg
    51.5 KB · Aufrufe: 6
Und wie entferne ich diese, ich mein sobald ich löschen drück ist nur noch eine Zeile, soblad ich Enter drücke ist wieder CRLF da, wie mache ichs das nur LF ist`?

Garantiert sau einfach, nur verstehe ich es irgendwie nicht


AHH ich habs

Konvertiere zu UNIX ist das Zauberwort

Code:
# chmod +x /var/media/ftp/USB-FlashDisk-01/Modifikationen/Zusatzfunktionen/Firmwarecheck/checkfw.sh
# sh -x /var/media/ftp/USB-FlashDisk-01/Modifikationen/Zusatzfunktionen/Firmwarecheck/checkfw.sh
+ #!/bin/sh
/var/media/ftp/USB-FlashDisk-01/Modifikationen/Zusatzfunktionen/Firmwarecheck/checkfw.sh: line 1: #!/bin/sh: not found
+ fw_path=ftp://ftp.avm.de/fritz.box/fritzbox.fon_wlan_7270/firmware/deutsch
+ [email protected]
+ [email protected]
+ mailserver=mail.gmx.de
+ [email protected]
+ mailpassword=Blub
+ cd /var/tmp
+ [ 1 ]
+ /etc/version
+ CURRENT_VERSION=54.04.67
+ wget -O - ftp://ftp.avm.de/fritz.box/fritzbox.fon_wlan_7270/firmware/deutsch/info.txt
+ grep Version
+ grep :
+ sed -e {s/Version//g;s/ //g;s/://g;}
Connecting to ftp.avm.de (212.42.244.90:21)
-                    100% |*******************************| 14508  --:--:-- ETA
+ ONLINE_VERSION=54.04.67
SystemPaketmitschnittundEinstellungensichernmitDateinamenmitsnummer
+ [ -f version_reported ]
+ ONLINE_VERSION_REPORTED=${CURRENT_VERSION}
+ [ 54.04.67
 = ${CURRENT_VERSION} ]dEinstellungensichernmitDateinamenmitsnummer
+ echo Installierte Version: 54.04.67
+ echo Verfügbare Version: 54.04.67
SystemPaketmitschnittundEinstellungensichernmitDateinamenmitsnummer
+ echo
+ echo Die neue Firmware steht unter ftp://ftp.avm.de/fritz.box/fritzbox.fon_wlan_7270/firmware/deutsch zum Download bereit.
+ mailer -s Neue Firmware für Ihre Fritz!Box 7270 verfügbar -f [email protected] -t [email protected] -m mail.gmx.de -a [email protected] -w blup -i ./message.txt
+ echo 54.04.67
SystemPaketmitschnittundEinstellungensichernmitDateinamenmitsnummer
+ sleep 120

Email schaut so aus wenn sie ankommt

Code:
Installierte Version: 54.04.67
Verfügbare Version: 54.04.67
SystemPaketmitschnittundEinstellungensichernmitDateinamenmitsnummer

Die neue Firmware steht unter ftp://ftp.avm.de/fritz.box/fritzbox.fon_wlan_7270/firmware/deutsch zum Download bereit.

Warum bekomme ich eine Email? sollte doch eigentlich keine Senden, weil ich ja schon die neuste habe?!

Grüße
 
Zuletzt bearbeitet:
So bekommst du die CR-Einträge weg:
Im Menü auf Suchen / Ersetzen ..., dann so einstellen wie im Screenshot und auf Alle ersetzen klicken.

Joe
 

Anhänge

  • Notepad2.gif
    Notepad2.gif
    24.9 KB · Aufrufe: 5
Hallo, jo wie gesagt, nach UNIX Konverten geht auch, nun gehts eben an den Script Fehler das ich auch eine Email erhalte auch wenn ich die neuste Version schon habe..

Danke schonmal
 
Ich kann in deinem Script leider keine if-Abfrage finden. :mad:

Deshalb bekommst du jeden Tag diese Mail zugestelllt.

Joe
P.S.: wo hast du denn dieses (miserable) Script her??
 
Von hier

http://www.the-construct.com/

Gerade nochmal erstellt

Code:
# write firmware check script
cat > /var/tmp/checkfw.sh << 'ENDCHECKFW'
#!/bin/sh

fw_path="ftp://ftp.avm.de/fritz.box/fritzbox.fon_wlan_7170/firmware/deutsch"
from=""
to=""
mailserver=""
mailuser=""
mailpassword=""

cd /var/tmp

# check daily
while [ 1 ]
do
  # installed version?
  CURRENT_VERSION=`/etc/version`
  # available version?
  ONLINE_VERSION=`wget -O - ${fw_path}/info.txt | grep 'Version' | grep ':' | sed -e '{s/Version//g;s/ //g;s/://g;}'`
  # last reported version
  if [ -f version_reported ]
  then
    ONLINE_VERSION_REPORTED=`cat ./version_reported`
  else
    ONLINE_VERSION_REPORTED='${CURRENT_VERSION}'
  fi
  # report new firmware if not yet reported
  if [ "${ONLINE_VERSION}" = "${ONLINE_VERSION_REPORTED}" ]
  then
    echo "firmware already reported"
  else
    # create mail
    echo "Installierte Version: ${CURRENT_VERSION}" > ./message.txt
    echo "Verfügbare Version: ${ONLINE_VERSION}" >> ./message.txt
    echo "" >> ./message.txt
    echo "Die neue Firmware steht unter ${fw_path} zum Download bereit." >> ./message.txt
    # send mail
    mailer -s "Neue Firmware für Ihre Fritz!Box verfügbar" -f "${from}" -t "${to}" -m "${mailserver}" -i ./message.txt
    echo "${ONLINE_VERSION}" > ./version_reported
  fi
  sleep 86400
done

ENDCHECKFW

# make it executable
chmod +x /var/tmp/checkfw.sh

sleep 120

/var/tmp/checkfw.sh &
# stop internet phone led flashing
echo 14,1 > ${LED_DEVICE}

EOF

Ich habe nur den Pfad angepasst, bzw aus der 7170 die 7270 drauß gemacht
 
Dann ist wohl in dieser Zeile noch ein Fehler drin:
Code:
fw_path="ftp://ftp.avm.de/fritz.box/fritzbox.fon_wlan_[B][COLOR="Red"]7170[/COLOR][/B]/firmware/deutsch"
Sollte das nicht auch 7270 heissen? :noidea:

Joe
 
Wie gesagt ist das was ich zuletzt gepostet habe, das Originale, direkt aus der erstellten Datei, natürlich habe ich den Pfad bei mir angepasst :)


Gibts eine Möglichkeit das zum Funktionieren zu bekommen?
 

Statistik des Forums

Themen
246,273
Beiträge
2,249,282
Mitglieder
373,862
Neuestes Mitglied
904lte
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.