[Info] Update-Check über den neuen AVM-Service

Das mit der festen Versionsnummer macht ja auch nur in einigen, sehr speziellen Szenarien Sinn ... in #1 hatte ich beschrieben, daß es für die Feststellung, ob es eine neue Firmware für ein Modell gibt, halt die derzeit installierte braucht und nur um diese zu ermitteln (der Rest der Parameter ist mehr "Beifang", vielleicht mit Ausnahme von "HWRevision", wobei manchmal auch "Major" stimmen muß (und zu "HW" passen sollte), wenn man die richtige Antwort haben will), wird überhaupt von der FRITZ!Box gelesen (wie gesagt, hatte ich in #1 geschrieben).

Wenn man es mit einer festen "alten" Version betreibt, muß man halt immer selbst entscheiden, ob die - dann ja immer gefundene - "neue" Version auch wirklich neu ist. Für meine eigenen Zwecke ("modfs" und andere (private) Skript-Dateien) bringt das nichts und wenn ich wirklich mal die gerade aktuelle Version abfragen will, kann man ja auch problemlos beim Aufruf einfach "Version=xxx.xx.xx-xxxxx" mit angeben, das kann natürlich auch ein "Phantasiewert" sein, solange man nach einer Retail-/GA-Firmware sucht.

Bei Beta-/Labor-Versionen (oder gar den internen) funktioniert das - zumindest nach meiner Erfahrung - aber nicht mehr so einfach mit der reinen Phantasie ... vermutlich gibt es dort bei AVM irgendwelche Graphen, von welcher Version auf welche aktualisiert werden kann.

EDIT: Wie blind ist man manchmal schon beim Schreiben von Kommentaren in Skript-Dateien? Das "which" ist ja schon wieder fast peinlich ... "whose" wäre wohl deutlich passender. Mir das auch noch mit einem Zitat so um die Ohren zu hauen ... jetzt bin ich am Boden zerstört. :D
 
Zuletzt bearbeitet:
Das mit der festen Versionsnummer macht ja auch nur in einigen, sehr speziellen Szenarien Sinn
ja zB
Repeater 310

Box 6590
Box 6890

Ich bin gerade dabei, aktuell für mich selbst, aber wenn Anklang da ist, würde ich es auch gerne teilen, um es zu veröffentlichen bedarf es aber noch einiges an Arbeit (welche ich aktuell selbst nicht ausüben kann, sondern mich in Sachen Bashscripting erst mal einarbeiten muss)

Ich habe aktuell eine Sammlung von folgenden Geräten, welche via juis_check per Abgabe eines Consolenbefehls, alle geprüft werden.

Es wird ein log mit den DL Links (unverschlüsselt, wie bekannt) angelegt.

Alle FW werden ebenso automatisch gedownloadet.
Box
3272

3490

4020

4040

5490

6490

6590

6890

7362sl

7369

7390

7412

7430

7490

7560

7580

7581

7582

7590​

Repeater

310

310B

450E

1160

1750E

DVB-C​

Powerline
540E

546E

1240E

1260E​
Hat noch jemand andere, fertige ./juis_check_xxxx.cfg (falls nötig incl der passenden ./juis_check) die er mir beisteuern würde?

//edit: Versionsnummer Pflicht bearbeitet
 
Zuletzt bearbeitet:
Die .cfg-Datei, die ich zur Juis-Suche für meine FRITZ!Box 7490 verwende, hat folgenden Inhalt:
Code:
Box=fritz.box
Version=1.1.1-1
Public=0
Beim Aufruf (ich nutze die Win10-Bash) wird kein weiterer Parameter angegeben.
Die letzten beiden Versionen (48032 / 48153) wurden nach deren Erscheinen problemlos gefunden.
 
Zuletzt bearbeitet:
Kannst du die 6890_LTE mit rein nehmen? Welche Angaben brauchst du dafür?
 
Die .cfg-Datei, die ich zur Juis-Suche für meine FRITZ!Box 7490 verwende, hat folgenden Inhalt:
ja weil die .cfg dadurch nicht "valide" ist werden die Daten aus ./jason... genommen

Beide Modelle sind im Spoiler aufgeführt und funktionieren schon.
Alle FW werden ebenso automatisch gedownloadet.
Box
...............

6890

.........

7490

Aktuell sieht das DL Verzeichnis nach Aufruf so aus
Code:
dl$ tree
.
├── FRITZ.Box_3272.126.06.83.image
├── FRITZ.Box_3490.140.06.83.image
├── FRITZ.Box_4020.de-en-es-it-fr-pl.147.06.83.image
├── FRITZ.Box_4040.en-de-es-it-fr-pl.155.06.83.image
├── FRITZ.Box_5490.de-en-es-it-fr-pl.151.06.84.image
├── FRITZ.Box_6490_Cable.de-en-es-it-fr-pl.141.06.85.image
├── FRITZ.Box_6590_Cable.de-en-es-it-fr-pl.148.06.85.image
├── FRITZ.Box_6890_LTE_LabBETA.en-de-es-it-fr-pl-nl.162.06.83-47699.image
├── FRITZ.Box_7362_SL.131.06.83.image
├── FRITZ.Box_7369.en-de-es-it-fr-pl.119.06.32.image
├── FRITZ.Box_7412.137.06.83.image
├── FRITZ.Box_7430.146.06.83.image
├── FRITZ.Box_7490.113.06.92.image
├── FRITZ.Box_7490.113.06.98-48153.image
├── FRITZ.Box_7560.149.06.92.image
├── FRITZ.Box_7580.153.06.92.image
├── FRITZ.Box_7581.en-de-es-it-fr-pl.152.06.85.image
├── FRITZ.Box_7582_LabBETA.en-de-es-it-fr-pl.156.06.80-44551.image
├── FRITZ.Box_7590.154.06.92.image
├── FRITZ.Box_7590.154.06.98-48151.image
├── FRITZ.Box_Fon_WLAN_7390.AnnexB.84.06.83.image
├── FRITZ.Box_WLAN_Repeater_1160.144.06.92.image
├── FRITZ.Box_WLAN_Repeater_1750E.134.06.92.image
├── FRITZ.Box_WLAN_Repeater_310.122.06.92.image
├── FRITZ.Box_WLAN_Repeater_310_.143.06.92.image
├── FRITZ.Box_WLAN_Repeater_DVB_C.133.06.92.image
├── FRITZ.Powerline_1240E.06.92.image
├── FRITZ.Powerline_1260E.157.06.92.image
├── FRITZ.Powerline_540E.06.92.image
└── FRITZ.Powerline_546E.118.06.92.image

0 directories, 30 files
 
Moin

Die .cfg flexibel zu gestalten ist die Kunst.
Da sie vom Skript inkludiert wird sind auch Kommandos möglich.
Beispiel für einen benötigten Parameter ( Box Argument ) und die Restlichen sind optional ( werden dann aus Infos der boxinfo.xml gesetzt ) oder sind fixed.
Wenn aber Parameter zusätzliche angegeben werden, dann aber zwingend in der Reihenfolge ihrer Auswertung.
( Box, Public, Version, HW, OEM )
...denn die ist fix vorgegeben und nur um "OEM" zu ändern müssen auch Public, Version und HW angegeben werden.

juis_check.cfg
Code:
echo "${0} Configfile found...$(cat ${0}.cfg)"

Box=${1}
shift
Public=${1}
shift
Version=${1}
shift
Serial=fixed
Name=fixed
HW=${1}
shift
OEM=${1}
shift
Lang=de
Annex=fixed

#eof
 
Zuletzt bearbeitet:
Aktuell hat jedes Modell seine eigene "juis_check" sowie
Serial=000000000000
Version=1.1.1-0
Name="FRITZ\\!\\"
HW=xxx
OEM=avm
Lang=de
Annex=egal
Country=049
Public=1
oder eben wenn nötig incl Versionsnummer (juis_check natürlich für zB 6590 angepasst)

juis_2$ tree
.
├── check-alles
├── dl
│ ├── FRITZ.Box_3272.126.06.83.image
│ ├── FRITZ.Box_3490.140.06.83.image
│ ├── FRITZ.Box_4020.de-en-es-it-fr-pl.147.06.83.image
│ ├── FRITZ.Box_4040.en-de-es-it-fr-pl.155.06.83.image
│ ├── FRITZ.Box_5490.de-en-es-it-fr-pl.151.06.84.image
│ ├── FRITZ.Box_6490_Cable.de-en-es-it-fr-pl.141.06.85.image
│ ├── FRITZ.Box_6590_Cable.de-en-es-it-fr-pl.148.06.85.image
│ ├── FRITZ.Box_6890_LTE_LabBETA.en-de-es-it-fr-pl-nl.162.06.83-47699.image
│ ├── FRITZ.Box_7362_SL.131.06.83.image
│ ├── FRITZ.Box_7369.en-de-es-it-fr-pl.119.06.32.image
│ ├── FRITZ.Box_7412.137.06.83.image
│ ├── FRITZ.Box_7430.146.06.83.image
│ ├── FRITZ.Box_7490.113.06.92.image
│ ├── FRITZ.Box_7490.113.06.98-48153.image
│ ├── FRITZ.Box_7560.149.06.92.image
│ ├── FRITZ.Box_7580.153.06.92.image
│ ├── FRITZ.Box_7581.en-de-es-it-fr-pl.152.06.85.image
│ ├── FRITZ.Box_7582_LabBETA.en-de-es-it-fr-pl.156.06.80-44551.image
│ ├── FRITZ.Box_7590.154.06.92.image
│ ├── FRITZ.Box_7590.154.06.98-48151.image
│ ├── FRITZ.Box_Fon_WLAN_7390.AnnexB.84.06.83.image
│ ├── FRITZ.Box_WLAN_Repeater_1160.144.06.92.image
│ ├── FRITZ.Box_WLAN_Repeater_1750E.134.06.92.image
│ ├── FRITZ.Box_WLAN_Repeater_310.122.06.92.image
│ ├── FRITZ.Box_WLAN_Repeater_310_.143.06.92.image
│ ├── FRITZ.Box_WLAN_Repeater_DVB_C.133.06.92.image
│ ├── FRITZ.Powerline_1240E.06.92.image
│ ├── FRITZ.Powerline_1260E.157.06.92.image
│ ├── FRITZ.Powerline_540E.06.92.image
│ └── FRITZ.Powerline_546E.118.06.92.image
├── dl.alles.txt
├── dl.list.txt
├── dl.log.txt
├── juis_check_1160.intern
├── juis_check_1160.intern.cfg
├── juis_check_1160.public
├── juis_check_1160.public.cfg
├── juis_check_1240E.intern
├── juis_check_1240E.intern.cfg
├── juis_check_1240E.public
├── juis_check_1240E.public.cfg
├── juis_check_1260E.intern
├── juis_check_1260E.intern.cfg
├── juis_check_1260E.public
├── juis_check_1260E.public.cfg
├── juis_check_1750E.intern
├── juis_check_1750E.intern.cfg
├── juis_check_1750E.public
├── juis_check_1750E.public.cfg
├── juis_check_310B.intern
├── juis_check_310B.intern.cfg
├── juis_check_310B.public
├── juis_check_310B.public.cfg
├── juis_check_310.intern
├── juis_check_310.intern.cfg
├── juis_check_310.public
├── juis_check_310.public.cfg
├── juis_check_3272.intern
├── juis_check_3272.intern.cfg
├── juis_check_3272.public
├── juis_check_3272.public.cfg
├── juis_check_3490.intern
├── juis_check_3490.intern.cfg
├── juis_check_3490.public
├── juis_check_3490.public.cfg
├── juis_check_4020.intern
├── juis_check_4020.intern.cfg
├── juis_check_4020.public
├── juis_check_4020.public.cfg
├── juis_check_4040.intern
├── juis_check_4040.intern.cfg
├── juis_check_4040.public
├── juis_check_4040.public.cfg
├── juis_check_450E.intern
├── juis_check_450E.intern.cfg
├── juis_check_450E.public
├── juis_check_450E.public.cfg
├── juis_check_540E.intern
├── juis_check_540E.intern.cfg
├── juis_check_540E.public
├── juis_check_540E.public.cfg
├── juis_check_546E.intern
├── juis_check_546E.intern.cfg
├── juis_check_546E.public
├── juis_check_546E.public.cfg
├── juis_check_5490.intern
├── juis_check_5490.intern.cfg
├── juis_check_5490.public
├── juis_check_5490.public.cfg
├── juis_check_6490.intern
├── juis_check_6490.intern.cfg
├── juis_check_6490.public
├── juis_check_6490.public.cfg
├── juis_check_6590.intern
├── juis_check_6590.intern.cfg
├── juis_check_6590.public
├── juis_check_6590.public.cfg
├── juis_check_6890.intern
├── juis_check_6890.intern.cfg
├── juis_check_6890.public
├── juis_check_6890.public.cfg
├── juis_check_7362sl.intern
├── juis_check_7362sl.intern.cfg
├── juis_check_7362sl.public
├── juis_check_7362sl.public.cfg
├── juis_check_7369.intern
├── juis_check_7369.intern.cfg
├── juis_check_7369.public
├── juis_check_7369.public.cfg
├── juis_check_7390.intern
├── juis_check_7390.intern.cfg
├── juis_check_7390.public
├── juis_check_7390.public.cfg
├── juis_check_7412.intern
├── juis_check_7412.intern.cfg
├── juis_check_7412.public
├── juis_check_7412.public.cfg
├── juis_check_7430.intern
├── juis_check_7430.intern.cfg
├── juis_check_7430.public
├── juis_check_7430.public.cfg
├── juis_check_7490.intern
├── juis_check_7490.intern.cfg
├── juis_check_7490.public
├── juis_check_7490.public.cfg
├── juis_check_7560.intern
├── juis_check_7560.intern.cfg
├── juis_check_7560.public
├── juis_check_7560.public.cfg
├── juis_check_7580.intern
├── juis_check_7580.intern.cfg
├── juis_check_7580.public
├── juis_check_7580.public.cfg
├── juis_check_7581.intern
├── juis_check_7581.intern.cfg
├── juis_check_7581.public
├── juis_check_7581.public.cfg
├── juis_check_7582.intern
├── juis_check_7582.intern.cfg
├── juis_check_7582.public
├── juis_check_7582.public.cfg
├── juis_check_7590.intern
├── juis_check_7590.intern.cfg
├── juis_check_7590.public
├── juis_check_7590.public.cfg
├── juis_check_DVB-C.intern
├── juis_check_DVB-C.intern.cfg
├── juis_check_DVB-C.public
├── juis_check_DVB-C.public.cfg
├── juis_check_test.intern
├── juis_check_test.intern.cfg
├── readme-consolenlog.txt
└── readme.txt

1 directory, 154 files
 
@koyaanisqatsi:
Dein Beispiel in Beitrag #147 beschreibt die Abarbeitung von Parametern, die beim Aufruf des Programmes direkt in der Kommandozeile mitgegeben werden (z.B. Box=$1).
Für vollständige Eingaben der Parameter (z.B. Box=fritz.box) in der .cfg spielt die Reihenfolge keine Rolle und die "shift"-Anweisungen sind überflüssig.
 
Ja, @Joe_57
Dein Skript ( die .cfg ) ist deswegen auch Unflexibel.
Mir ging es darum, dass das Skript auf verschiedene Boxen losgelassen werden kann, mit jeweils unterschiedlichen Argumenten.
Code:
./juis_check 192.168.178.1 1 149.06.90 221 avm && ./juis_check 192.168.178.2 0
...ist flexibler ;)


@stoney Klaro, so hast du auch jede Menge Backups von juis_check :D
...aber wenn du einen Softlink auf juis_check machst...
Code:
ln -sf juis_check 7560
./7560
Missing configuration file './7560.cfg'.
...und den dann aufrufst, verlangt es auch nach einer .cfg mit diesen Namen ;)


Apropos juis_check
Debug Parameter ausprobieren: juis_check -d
...funktioniert auch in der .cfg, mit...
Code:
debug=1
 
Zuletzt bearbeitet:
Klaro, so hast du auch jede Menge Backups von juis_check :D
...aber wenn du einen Softlink auf juis_check machst...
Ja ich bräuchte dann aktuell mindestens zwei juis_check Versionen, das ist ist mir bewusst.

Aktuell ist es einfach mal auf ganz simpel und nachvollziehbar (für ansich Jederman) gelöst, wie schon geschrieben, soll das ganze eleganter und kompakter werden. (reduziert aktuell auf 1 directory, 98 files)


...und den dann aufrufst, verlangt es auch nach einer .cfg mit diesen Namen ;)
aktuell ist es möglich via
Code:
 ./juis_check_MODELL Public=0/1
zu suchen.

Für weitere Tipps/Anregungen bin ich sehr dankbar.

// edit: allerdings finde ich es so aufgedröselt nicht mal ganz verkehrt für den eher unerfahrenen Benutzer, dieser kann nichts desto trotz, verstehen was passiert, ohne viel mit Parametern (Syntax) hantieren zu müssen.

Aber Lust auf eine richtige (seperate) Scriptlösung hätte ich schon für die Zukunft.
 
Zuletzt bearbeitet:
@stoney: Mit einer flexiblen .cfg kannst du ohne eine Fritz!Box nach beliebigen HW-Revisionen suchen lassen, die von dem AVM Updateabfrageserver(n) noch unterstützt werden...
checkall
Code:
#!/bin/sh

for i in $(cat HW.ids)
do
./juis_check 0.0.0.0 0 000.00.00-00000 ${i} avm

if [ ${?} != 0 ]
then
echo "failed"
else
sleep 1
fi

done
#eof
Trag sie einfach, durch Leerzeichen oder neue Zeile getrennt, in die Datei HW.ids ein.
 
Das macht es jetzt auch schon, da für jedes Modell eine cfg mit allen nötigen Parametern
Spoiler: juis_check.cfg.example
erstellt ist.

Allerdings, was machst Du wenn ein Modell die genaue FW Version fordert? Lässt sich diese an eine HW knüpfen, sodass diese dann mit gesetzt wird?
 
Zuletzt bearbeitet:
Meinst du, wenn die Meldung kommt...
No newer version found, check was made with source version '000.00.00-00000'.
...?

Die HW-Revisionen, wo es nicht nötig wäre, ab in die HW.ids und danach erst die Checks machen, wo eine fixe .cfg notwendig wäre.

Alternativ, und etwas aufwändiger wäre, wenn bei bestimmten HWs noch spezielle if-Abfragen den Skriptaufruf entsprechend abändern/erweitern täten.

Das Skript hab ich mal alle HW-Revisionen, die problemlos funktionieren, in eine stattliche Liste schreiben lassen...
94
122
127
137
138
139
144
145
146
156
168
172
173
175
177
179
180
181
183
185
188
189
190
192
193
194
195
196
198
200
201
203
205
206
209
212
214
215
216
218
219
221
222
223
225
226
227
229
231
234
234 nur mit Public=1
 
Zuletzt bearbeitet:
Die 234 geht auch. Zumindest mit Public=1 erhält man eine LabBETA.
Siehe auch #138.
 
Zuletzt bearbeitet:
Ich analysiere noch...

Das Skript liefert glücklicherweise Exitcodes, auf die reagiert werden kann...

0 == Firmware gefunden, aktueller als die Angefragte
1 == Server erreicht, Firmware aktuell, nichts Neues da
(No newer version found, check was made with source version '000.00.00-00000')
2 == Server nicht erreicht ( zumindest nicht mit/über diese HW-Revision )

@eisbaerin: Stimmt, ist jetzt auch in der Liste
...muss wohl noch eine Liste mit Public=1 erstellen lassen.
:rolleyes: ( Danke für den Hinweis )
 
Zuletzt bearbeitet:
...und auch noch eine "Internationale".
( Verschrieben & korrigiert )

Hier sind noch die HWs, die bei Versionsangabe 000.00.00-0000 den Exitcode 1 zurückliefern...
157
159
162
171
176
182
187
191
197
213
220
224
228
 
Zuletzt bearbeitet:
Und letztendlich...
... machen beide Varianten das selbe nur auf eine andere Art und Weise....

meine ist für den "Leihen" von Anfang an gedacht gewesen, mit der Übersichtlichkeit sowie Durchschaubarkeit die es einem "Leihen" ermöglicht zu verstehen was genau da passiert und wie er dies ohne große Kenntnisse ggf. erweitern kann. Daher die einzelnen .cfg's - ich bin bemüht das ganze noch weiter "schlank" zu machen, allerdings will ich nicht, dass dadurch meine Absicht, wie gerade genannt, kaputt geht.

Ich freue mich, dass Du hier auch mit "einsteigst" - wenn Du magst mach mal eine Unterhaltung auf.
 
Zuletzt bearbeitet:
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.