.titleBar { margin-bottom: 5px!important; }

Firmware Check Funktioniert nicht richtig (Email benachrichtigung)

Dieses Thema im Forum "FRITZ!Box Fon: Modifikationen" wurde erstellt von devildevil3, 17 Jan. 2009.

  1. devildevil3

    devildevil3 Mitglied

    Registriert seit:
    28 Feb. 2006
    Beiträge:
    357
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    #1 devildevil3, 17 Jan. 2009
    Zuletzt bearbeitet: 19 Jan. 2009
    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="XXXXX@gmx.de"
    to="XXXX@gmail.com"
    mailserver="mail.gmx.de"
    mailuser="XXXX@gmx.de"
    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
     
  2. cuma

    cuma Aktives Mitglied

    Registriert seit:
    16 Dez. 2006
    Beiträge:
    2,735
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Führ das Skript mal mit "sh -x namedavon.sh" aus, dann siehst du was nicht stimmt
     
  3. devildevil3

    devildevil3 Mitglied

    Registriert seit:
    28 Feb. 2006
    Beiträge:
    357
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    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="XXXXX@gmx.de"
    to="XXXX@gmail.com"
    mailserver="mail.gmx.de"
    mailuser="XXXX@gmx.de"
    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
    + from=xxx@gmx.de
    + to=xxxxx@gmail.com
    + mailserver=mail.gmx.de
    + mailuser=xxxx@gmx.de
    + 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
     
  4. cuma

    cuma Aktives Mitglied

    Registriert seit:
    16 Dez. 2006
    Beiträge:
    2,735
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Sehr komische Fehler sind das. Kann es sein dass in der Datei Dos/Windows Zeilenumbrüche sind?
     
  5. devildevil3

    devildevil3 Mitglied

    Registriert seit:
    28 Feb. 2006
    Beiträge:
    357
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    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:

  6. Joe_57

    Joe_57 IPPF-Promi

    Registriert seit:
    5 März 2006
    Beiträge:
    4,739
    Zustimmungen:
    32
    Punkte für Erfolge:
    48
    #6 Joe_57, 19 Jan. 2009
    Zuletzt bearbeitet: 19 Jan. 2009
    Probier doch mal Notepad++ :rolleyes:
    Unter "Sprachen" einfach "shell" auswählen, und gut is.

    Joe
     

    Anhänge:

  7. devildevil3

    devildevil3 Mitglied

    Registriert seit:
    28 Feb. 2006
    Beiträge:
    357
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    #7 devildevil3, 19 Jan. 2009
    Zuletzt bearbeitet: 19 Jan. 2009
    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
     
  8. Joe_57

    Joe_57 IPPF-Promi

    Registriert seit:
    5 März 2006
    Beiträge:
    4,739
    Zustimmungen:
    32
    Punkte für Erfolge:
    48
    #8 Joe_57, 19 Jan. 2009
    Zuletzt bearbeitet: 19 Jan. 2009
    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
     
  9. devildevil3

    devildevil3 Mitglied

    Registriert seit:
    28 Feb. 2006
    Beiträge:
    357
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    also sind die schwarzen balken ja nicht schlechtes?!
    Sind ja Zeilenumbrüche

    habs mal gepsiechert und versucht, fehler bleibt dennoch bestehen :(
     
  10. Joe_57

    Joe_57 IPPF-Promi

    Registriert seit:
    5 März 2006
    Beiträge:
    4,739
    Zustimmungen:
    32
    Punkte für Erfolge:
    48
    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:

  11. devildevil3

    devildevil3 Mitglied

    Registriert seit:
    28 Feb. 2006
    Beiträge:
    357
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    #11 devildevil3, 20 Jan. 2009
    Zuletzt bearbeitet: 20 Jan. 2009
    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
    + from=blub@gmx.de
    + to=Blub@gmail.com
    + mailserver=mail.gmx.de
    + mailuser=Blub@gmx.de
    + 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 blub@gmx.de -t blufl@gmail.com -m mail.gmx.de -a blub@gmx.de -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
     
  12. Joe_57

    Joe_57 IPPF-Promi

    Registriert seit:
    5 März 2006
    Beiträge:
    4,739
    Zustimmungen:
    32
    Punkte für Erfolge:
    48
    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:

  13. devildevil3

    devildevil3 Mitglied

    Registriert seit:
    28 Feb. 2006
    Beiträge:
    357
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    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
     
  14. Joe_57

    Joe_57 IPPF-Promi

    Registriert seit:
    5 März 2006
    Beiträge:
    4,739
    Zustimmungen:
    32
    Punkte für Erfolge:
    48
    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??
     
  15. devildevil3

    devildevil3 Mitglied

    Registriert seit:
    28 Feb. 2006
    Beiträge:
    357
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    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
     
  16. Joe_57

    Joe_57 IPPF-Promi

    Registriert seit:
    5 März 2006
    Beiträge:
    4,739
    Zustimmungen:
    32
    Punkte für Erfolge:
    48
    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
     
  17. devildevil3

    devildevil3 Mitglied

    Registriert seit:
    28 Feb. 2006
    Beiträge:
    357
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    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?