Picture of Muschelpuster
Registered 7 years 344 days
Muschelpuster Friday, 3 August 2018, 06:07 PM
mod cmd UP1 check
Moin zusammen,

Irgendwie funzt das bei mir in der V12r2 nicht wirklich, bzw. unzuverlässig. Was muss ich tun, damit die Variable übernommen wird? Ich habe:

mod cmd UP1 check ser TEST
config write
config activate

Mal sehe ich die neue Variable auf dem Endgerät, mal nicht - ich erkenne aber nicht die Unterschiede...

unzuverlässige Grüße
Niels


Picture of Sebastian Hayer-Lutz (innovaphone)
Moderator Registered 6 years 334 days
Sebastian Hayer-Lutz (innovaphone) Wednesday, 8 August 2018, 11:37 AM
Re: mod cmd UP1 check
Hallo Niels,

das Kommando "mod cmd UP1 check ser TEST", prüft ja erst einmal nur ob die Variablen gleich sind.
Wenn ungleich wird das weitere Script ausgeführt, und am Ende die Update Variabel gesetzt und das chk Kommado ausgeführt (in deinem Fall ser == no-op)

Solltest du jetzt irgendwo im Script ein reset haben, wird die neue Variable nicht gesetzt. Hier würde die Variable erst bei nächstem Durchlauf gesetzt werden. Dann sollte man anstelle von ser oder no-op ein iresetn im mod cmd command nutzen.
Kann es sein, dass die deine Frage schon erklärt?

http://wiki.innovaphone.com/index.php?title=Reference8:Update_Server#Check_command

Attention:
If one of the commands following the check command starts a reset sequence (reset, ireset, ...) the UPDATE/CHECK variable is NOT updated and the <final-command> is NOT executed. Thus a reset should be initiated only by the <final-command>. Otherwise the maintenance file could be executed again and again after each reset.
Picture of Muschelpuster
Registered 7 years 344 days
Muschelpuster Wednesday, 8 August 2018, 11:50 AM
Re: mod cmd UP1 check
Moin Sebastian,

Es folgt kein Reset o.ä..
Interpretiere ich den Text richtig, dass kein config activate oder config write erforderlich ist, damit die Variable geschrieben wird?
Was ich im Zweifelsfall habe ist eine Zeiteinschränkung nach dem Befehl. Könnte der Abbruch des Scriptlaufes dadurch dazu führen, dass die Variable nicht geschrieben wird?
Ich habe mal den Holzhammer raus geholt - das geht:
vars del UPDATE/CHECK
vars create UPDATE/CHECK p Test

Niels

Picture of Sebastian Hayer-Lutz (innovaphone)
Moderator Registered 6 years 334 days
Sebastian Hayer-Lutz (innovaphone) Wednesday, 8 August 2018, 12:01 PM
Re: mod cmd UP1 check
Hallo Niels,

korrekt - ein config write/activate ist an dieser Stelle nicht nötig. (Für das setzen der CHK Variable selbst)
Normalerweise hat man aber trotzdem am Scriptende ein write/activate da du schließlich irgendwas machen wolltest wenn die chk Variable ungleich der im Phone gewesen ist.

Deine Holzhammer Methode funktioniert zwar, bringt dir aber andere Nachteile ;)
a) der Vergleich geht nicht mehr
b) ein "vars create" erwartet immer einen reset


Ich wüsste jetzt nicht wie das bei dir sonst Zustande kommt.
Selbst wenn man dein Script nutzt, wird im Test jedes mal die korrekte CHK Variable gesetzt.

mod cmd UP1 check ser TEST
config write
config activate
Picture of Muschelpuster
Registered 7 years 344 days
Muschelpuster Wednesday, 8 August 2018, 12:33 PM
Re: mod cmd UP1 check
Hier mal das komplette Script, so wie ich es verwende:

## neuer Update-Pfad (SW-Versorgung)
mod cmd UP1 check ser update15
config add UP1 /url https://meine-pbx-url/DRIVE/CF0/Update/SW/sw-2.txt
config write
config activate

## zeitliche Einschränkung
mod cmd UP1 times /allow 23,0,1,2,3,4

## Backup:
mod cmd UP0 scfg https://meine-pbx-url/DRIVE/CF0/Backup/#h_#b4.txt no-op 48h /force 48

## SW-Update
mod cmd UP0 boot https://meine-sw-url/sw/v12r2sr15/ ser v12r2sr15
mod cmd UP0 prot https://meine-sw-url/sw/v12r2sr15/ ser v12r2sr15
# reboot
irebootn

Zur Erklärung: Im Normalbetrieb werden Endgeräte, welche neu installiert werden nachts hochgerüstet. Zum Update aller bestehenden Geräte aktivieren wir die ersten 4 Zeilen um über einen anderen Weg hochzurüsten. Dabei verhindern wir die Bootloop-Problematik bei IP222 und IP232, wie hier dokumentiert. Das check soll nun verhindern, dass ein Gerät mehrfach die Prozedur durchläuft, jedoch wurde die Variable nicht aktualisiert, nachdem das Script nach Änderung gelesen wurde. Das Phone biegt zwar zur neuen Datei ab, aber eben ohne die Variable.
Ich fürchte, dass die zeitliche Einschränkung hier das Problem ist.

ausführliche Grüße
Niels
Picture of Sebastian Hayer-Lutz (innovaphone)
Moderator Registered 6 years 334 days
Sebastian Hayer-Lutz (innovaphone) Wednesday, 8 August 2018, 01:54 PM
Re: mod cmd UP1 check
Hi Niels,

nach deiner Logik passiert aber folgendes:

Ein Phone kommt das erste mal um 13:00 Uhr
-> check ist ungleich wird also ausgeführt
-> Neue UP1 URL
-> check serial wird aktualisiert
=> Script Ende

Ein Phone kommt das erste mal um 23:00 Uhr
-> check ist ungleich wird also ausgeführt
-> Neue UP1 URL
-> einmaliges Backup
-> einmaliges Firmwareupdate
-> reboot
-> check serial wird _nicht_ aktualisiert
=> Script Ende

Wenn du ohnehin via UP1 eine neue Update URL sendest, weshalb machst du das Firmwareupdate dann nicht unter der neuen Location?
Oder zuerst das Update + Reboot und danach die neue UP1 URL setzen.

Das mod cmd UP0 Kommando arbeitet ähnlich...
Wenn die check serial ungleich ist wird ausgeführt, sonst einfach übersprungen.
Sprich du könntest es auch zuerst machen, und nach dem Reboot die neue UP1 URL setzten. (Dann wird auch immer brav die check serial angepasst)

Picture of Muschelpuster
Registered 7 years 344 days
Muschelpuster Wednesday, 8 August 2018, 02:49 PM
Re: mod cmd UP1 check
Ja, Sebastian - ich könnte die Variable auch in der 2. Datei setzen.
Der Ablauf ist in der Regel so, dass wir am Tag das Update des Systems mit den ersten Zeilen vorbereiten (im Normalbetrieb sind die ja auskommentiert). So pollen zum Feierabend bereits alle Phones die 2. Datei. Auch hier gibt es eine zeitliche Einschränkung. Wenn die Zeit ran ist, wird eine Sicherung von dem Phone erstellt, die Update-URL auf die 3. Datei gesetzt und der Flash gelöscht. Nach dem Speichern dieser Einstellungen erfolgt das Update mit anschließendem Reset.
In der 3. Datei wird dann die Sicherung von dem Phone wiederhergestellt und die 'falschen' SW-Flags aus der Sicherung korrigiert. Dann wird wieder auf Datei 1 verwiesen und das Telefon soll die Runde nicht nochmal drehen.
Am nächsten Tag kommentieren wir die Zeilen in der 1. Datei wieder aus.

In der Betrachtung dieses Ablaufes würde es höchstens Sinn machen, das check in der 3. Datei einzubauen. Bleibt aber die Frage, warum es in der 1. Datei nicht klappt.

runde Grüße
Niels

PS - der Grund für den ganzen Kopfstand steht hier:
http://forum.innovaphone.com/moodle2/mod/forum/discuss.php?d=21414
Seit wir das so machen, haben wir keine Probleme beim Upgrade der Endgeräte mehr!

Picture of Sebastian Hayer-Lutz (innovaphone)
Moderator Registered 6 years 334 days
Sebastian Hayer-Lutz (innovaphone) Wednesday, 8 August 2018, 03:46 PM
Re: mod cmd UP1 check
> Bleibt aber die Frage, warum es in der 1. Datei nicht klappt.
Grundsätzlich richtig ;)

Fakt ist die Check Variable wird nicht gesetzt, wenn am ende ein Reboot stattfindet.
Laut deinem Script kann dies auf den Telefonen passieren.
Aber selbst wenn das passiert, zieht das Telefon beim nächsten Update Intervall das Script ohne späteren Reboot.
Und dann sollte/muss die korrekte Check Variable gesetzt sein.

Du sagtest, dass du immer wieder mal Geräte in diesem Status hast, und die CHK Variable fehlt. Wurde denn die UP1 korrekt gesetzt?
Ich denke hier sollten wir dann einmal - via support - an einem der betroffenen Phones ansetzten.

So ganz erschließt sich mir der Sinn in anderem Thread noch nicht ein Backup zu machen, updates/configs um dann einen restore durchführen zu wollen.
Habt ihr mal geschaut ob ihr mit dem PHP Update Server evtl. einen besseren/charmanteren Flow in eure Updates bekommen würdet?

[edit - 15:45]
Ein Nachtrag noch - Sollte der obige Fall eintreten, dass ein Firmwareupdatre gemacht wurde, ruft das Phone natürlich die NEUE UP1 URL auf und hat keine aktualisierte CHECK Serial
[/edit - 15:45]

Picture of Muschelpuster
Registered 7 years 344 days
Muschelpuster Wednesday, 8 August 2018, 06:00 PM
Re: mod cmd UP1 check
PHP-Update-Server steht auf der Agenda, aber es fehlt Zeit und KnowHow (was wieder Zeit kostet).
Es findet kein Reboot statt, da die Zeilen ja am Tag aktiviert werden. Aber ich konnte Dank unserer Diskussion das Problem finden: Die Variable wird nicht übernommen, wenn danach irgendwo im Script ein mod cmd UP1 times /allow folgt. Eine einfache Datei zeigt dies. Wenn da nur der mod cmd UP1 check drin ist, wird die Variable übernommen, sobald ich mod cmd UP1 times /allow dahinter packe und die Zeit nicht gültig ist, dann nicht mehr. Ist die Zeit gültig, dann ist alles gut.
Bug oder Feature?

Daher passiert es wohl, dass die Variable in einigen Scripts gesetzt wird und in anderen nicht.

Der Sinn der Löschung und Wiederherstellung ist, dass die Anruferlisten, Klingeltöne etc. nach dem Befehl mod cmd FLASHDIR0 erase-all
wiederhergestellt werden. Nur durch die Löschung verhindern wir zuverlässig, dass die Geräte durch ein Update in die Bootschleife abdriften.

diagnostizierte Grüße
Niels



Picture of Sebastian Hayer-Lutz (innovaphone)
Moderator Registered 6 years 334 days
Sebastian Hayer-Lutz (innovaphone) Thursday, 9 August 2018, 08:16 AM
Re: mod cmd UP1 check

> Die Variable wird nicht übernommen, wenn danach irgendwo im Script ein mod
> cmd UP1 times /allow folgt. Eine einfache Datei zeigt dies. Wenn da nur der mod > cmd UP1 checkdrin ist, wird die Variable übernommen, sobald ich mod cmd UP1
> times /allow dahinter packe und die Zeit nicht gültig ist, dann nicht mehr. Ist die > Zeit gültig, dann ist alles gut. Bug oder Feature?

Teste ich und gebe dir bescheid ,) Danke für den Hinweis.


Picture of Sebastian Hayer-Lutz (innovaphone)
Moderator Registered 6 years 334 days
Sebastian Hayer-Lutz (innovaphone) Thursday, 9 August 2018, 11:48 AM in response to Muschelpuster
2 of 2 users consider this post helpful
Re: mod cmd UP1 check
Hallo Niels,

wir haben das einmal diskutiert und es macht auch wirklich Sinn so - also ein Feature :-}

Wenn ein Script von einem times abgebrochen wird, wird ein zu voriger check nicht aktualisiert.

Macht Sinn bei Z.b. folgendem:
cmd UP1 check <neue Variable>
... diverse configs
cmd UP1 times <Nacht>
... Firmwareupdate

Wenn das Phone das erste mal Tagsüber kommt, würde es das Update niemals ausführen wenn wir die CHK Variable setzten würden.
Somit verhindert ein Abbruch durch times das schreiben der CHK Variable.
Kommt das Telefon das erste mal Nachts, würde es funktionieren.
Da man so zu einem Status kommen könnte der irgendwie nicht definiert ist - ist das schon richtig so.

Wenn man nun beide Bedingungen in Kombination nutzt, wird somit die obere Bedingung nur erfüllt sein, wenn die folgende Bedingung auch passt.

Ich habe im Wiki einen entsprechenden Hinweis hinzugefügt.

Ganz abgesehen davon, wäre es ohnehin nicht ratsam erst ein check zu machen und dann ein times. Mann könnte nun produzieren, dass alle 15 Minuten config in ein Gerät geschrieben wird, obwohl die config bereits existiert (ggf. sehr viele Schreibzugriffe im Flash)
Wenn beide Kommandos in Kombination genutzt werden, sollte times stets vor check stehen (sofern man Schreiboperationen hat)

Das ist zwar keine wirklich Lösung für dein konkretes Problem, aber klärt hoffentlich das verhalten etwas auf ;)

Bezüglich deines konkreten Problems würde ich eher Konzeptionell am Updateprozess als solches ansetzten.

Der Sinn der Löschung und Wiederherstellung ist, dass die Anruferlisten, Klingeltöne etc. nach dem Befehl mod cmd FLASHDIR0 erase-all
wiederhergestellt werden.

Muss es unbedingt ein erase-all sein? Oder kann man das evtl. auf ohne Lösen? smile

Beste Grüße Basti
Picture of Muschelpuster
Registered 7 years 344 days
Muschelpuster Friday, 10 August 2018, 07:15 AM
Re: mod cmd UP1 check
Moin Sebastian,

Ja, das kann man sich schön reden wink
Man kann es aber natürlich auch in die andere Richtung zurecht diskutieren, aber egal wie - nur eine Richtung geht und die ist jetzt klar. Ich weiß jetzt wenigstens, wo es klemmt und kann dies berücksichtigen.

>Bezüglich deines konkreten Problems würde ich eher Konzeptionell am Updateprozess als solches ansetzten.
Unsere Updateprozesse sind eigentlich recht gut. Das sage nicht nur ich, weil ich sie mit meinem Kollegen zusammen kreiert habe, sondern auch andere. Mit meinem heutigen Wissen würde ich schon wieder einiges anders machen, aber nicht an der hier diskutierten Baustelle.

>Muss es unbedingt ein erase-all sein? Oder kann man das evtl. auf ohne Lösen? smile
Diese Frage kann mir nur Innovaphone beantworten! Ich weiß nur, dass wir so auch in unserer Konstellation mit statischem NTP und DNS via DHCP problemlos updaten können. Und da wir versuchen unsere Systeme relativ aktuell zu halten gehören Updates schon zu unserem Alltag. Ich hätte nichts dagegen, wenn es einfacher ginge, nur muss ich mir sicher sein, dass es zuverlässig funktioniert, denn wir können es uns nicht leisten, dass wir nach jedem Update erst einmal einen Tag damit beschäftigt sind die Folgen zu beseitigen. Und natürlich können und wollen wir das unseren Kunden auch nicht zumuten. Da erstelle ich dann lieber komplizierte Updateprozesse.

zuverlässige Grüße
Niels
Picture of Sebastian Hayer-Lutz (innovaphone)
Moderator Registered 6 years 334 days
Sebastian Hayer-Lutz (innovaphone) Monday, 13 August 2018, 10:36 AM
Re: mod cmd UP1 check
> nur muss ich mir sicher sein, dass es zuverlässig funktioniert
Korrekt - das sehe ich ebenso ;)

IMHO: Mir - persönlich - wiederstrebt die angewendete Prozedur mit einem erase ein wenig.

Ich würde folgendes Vorschlagen:
Wenn Ihr den erase wirklich benötigt weil etwas nicht geht, ist das doch eher ein Bug als ein Feature. Mach doch mal einen presales Case mit den konkreten Informationen und einem entsprechenden Beispiel auf.
Ich denke hier wäre es doch auch besser für euch wenn Ihr nicht jedes mal den kompletten Flash platt bügeln würdet, sondern ein Updatemechanismus straight-forward nach Lehrbuch nutzen könntet ;)


@Niels
Der Artikel zum Updateserver wurde nochmal angepasst, da es noch weitere Szenarien gibt wo die CHK variable - zurecht - nicht gesetzt wird.
http://wiki.innovaphone.com/index.php?title=Reference10%3AConcept_Update_Server&diff=50409&oldid=49986
← You can define your color theme preference here