RS IPS Compatibility Scanner
Update 02.02.2016
Version 1.3, getestet unter IPS 4.0 WIN + Linux-> siehe Changelog im Download
Vorspiel
Der Hersteller von IPS hält den Anwender regelmäßig auf Trab, in dem bei größeren Releases einfach mal Systembefehle wegfallen, durch Neue ersetzt werden oder die Ausgabe der Ergebnisse von Systembefehlen geändert werden – wie aktuell der Wechsel von der bisherigen IPS Version 3.4 zur 4.0.
Für IP-Symcon Betreiber, deren System noch nicht so lange im Einsatz ist, stellt dies in der Regel kein gravierendes Problem dar. Auch bietet sich dadurch die Chance, sich tiefer mit dem System vertraut zu machen. Wer aber viele/komplexe Eigen- und/oder Fremd-Projekte im System hat, für den wird es dann unter Umständen sehr aufwändig bis unlösbar. Unlösbar insbesondere dann, wenn für die Fremdprojekte zum Zeitpunkt des Release-Wechsels kein Update vom Autor bereit steht und man selbst nicht so tief den Rüssel ins PHP gesteckt hat, um die Umstellungsprobleme aus eigener Kraft zu lösen.
Grundsätzlich habe ich die Erfahrung gemacht: je länger man sein IP-Symcon in Betrieb hat und je komplexer es wird, desto aufwändiger und ärgerlicher sind anstehende Release-Wechsel.
Und mit dem RS IPS Compatibility Scanner kommt jetzt die Lösung?
Natürlich nicht! ABER: dem angehenden Migranten kann eine Hilfe an die Hand gegeben werden, die bevorstehende Umstellung seiner IP-Symcon Installation auf das nächste Release gut vorzubereiten. Mit dem RS IPS Compatibility Scanner kann ich mein gesamtes System scannen, ob und mit welchen (manuellen) Vorbereitungen ich zu rechnen habe. Konkret werden alle Events und Scripte nach alten, abgekündigten Systembefehlen/Systemvariablen gescannt. Im Ergebnis wird haarklein aufgelistet,
- Welcher der betroffenen Systembefehle/Systemvariablen wurde verwendet?
- In welchem Event/Script (Objekt-ID + Objektname) ist der Fall aufgetreten?
- In welcher Code-Zeile wurde das böse Wort verwendet?
- Wie dringend ist die Bereinigung?
Im Anschluss kann man sich dann in aller Ruhe mit dem Austausch der alten Systemfunktionen vertraut machen. Das setzt natürlich a) gute PHP-Kenntnisse und b) sehr gute IP-Symcon Kenntnisse vom Anwender voraus. Dies nimmt einem dieses Scanner-Projekt nicht ab. Zu empfehlen ist hier, die gefundenen (alten) Systembefehle in der jeweiligen Migrationsanleitung des IPS-Releases zu suchen und sich von dort aus zu einer Lösung zu hangeln. Notfalls über die IP-Symcon Community oder den Hersteller.
Wer etwas versierter ist, schaut in die ‚__compatibility.inc.php‚ und findet dort den zum alten Systembefehl passenden neuen Systembefehl.
Raketen-Start
Wer es ganz eilig hat:
- Installer-Script aus dem Download ins eigene System einbauen
- Installer-Script ausführen
- RS IPS Compatibility Scanner (Script “RS IPS Compatibility-Scanner„) öffnen, Script-Mindestlaufzeit auf 10000 (oder höher) setzen
- Script manuell starten
- 1-10 Kaffe trinken
- Ergebnis (Meldefenster in der Konsole) auswerten
Nicht wundern: die Scriptlaufzeit ins in der Regel hoch, mitunter sehr hoch. Auf bis zu 10 Minuten (bei ca. 1000 Scripts + 1000 Events) sollte man sich da schon einstellen. Keine Angst: dem IPS-System macht das nichts – es wird für die Scriptlaufzeit nur ein PHP-Task genutzt (der damit dem Rest nicht mehr zur Verfügung steht).Das ist aber nichts gegen den evtl. danach zu investierenden Aufwand, um alle IPS-Objekte für die nachfolgende IPS-Version betriebsfähig zu halten. Hier darf man in aller Ruhe jedes einzelne Objekt manuell anfassen, den Code ändern und sich dem nächsten Objekt zuwenden…. bis alle Treffer abgearbeitet sind. Und da können von einer handvoll bis einige hundert sein. Gute Reise, gute Besserung!
Features:
Das Script läuft grundsätzlich in 2 unterschiedlichen Betriebsmodi:
1. Automatik-Modus (wenn Script durch TimerEvent gestartet):
- Macht immer einen Fullscan des Systems
- Verschickt Scan-Ergebnisse per Mail (wenn mind. eine SMPT SendMail-.Instanz vorhanden ist)
- Legt CSV-Datei im IP-Symcon Ordner ab
2. Manueller Modus (manuell gestartetes Script):
- Macht Teil- oder Fullscan (je nach Konfiguration) des IPS-Systems
- Zeigt Scan-Ergebnisse im Script-Meldefenster
- Legt CSV legt CSV-Datei im IP-Symcon Ordner ab (nur bei Fullscan)
Konfiguration
Der ambitionierte IPS-User wird sich auch diverse Möglichkeiten wünschen, das Scanergebnis zu beeinflussen. Das hat der Programm-Autor glücklicherweise vorhergesehen und diverse Möglichkeiten eingebaut. Als Frisch-User muss man sich nicht zwingend damit auseinandersetzen. Aber spätestens nach einem Scanergebnis mit mehreren hundert Treffern wird man sich sehr gerne mit diesem Möglichkeiten beschäftigen *breitgrins*
- ‚RS IPS Compatibility Selektoren-Container‚: bietet die Möglichkeit, zusätzlich nach selbst definierten Suchbegriffen (politisch korrekt: Selektoren)im Code zu suchen
- ‚RS IPS Compatibility Ausschluss-Container‚: bietet die Möglichkeit, zusätzlich nach selbst definierten Suchbegriffen im Code zu suchen, die im Scan-Ergebnis erscheinen sollen, wo aber keine Code-Korrektur erforderlich ist
- ‚RS IPS Compatibility BlackSheep-Container‚: bietet die Möglichkeit, Objekt-ID’s, komplette Teilbäume oder in Objektnamen vorkommende Suchbegriffe vom Systemscan auszuschließen
Eine detaillierte Beschreibung, welche Bedeutung die Einträge in den jeweiligen Containern haben, mit welcher Syntax diese eingepflegt werden und welche Auswirkungen die Einpflege auf den späteren Systemscan hat, ist in den entsprechenden Containern enthalten.
Scan fertig, watt nu?
Nach dem das Scan-Ergebnis (entweder im Script-Meldefenster bei manuellem Script-Start oder in der Mail bei Event-gesteuertem Start) zur Kenntnis genommen hat und hoffentlich nicht gleich (wegen tausender Treffer in der Ergebnisliste) vom Stuhl gekippt ist, beginnt die eigentliche Arbeit: Bereinigung des IPS-Systems von Altlasten. Aber wie den riesen Berg an Arbeit bewältigen (wir projizieren gerade mehrere 100 Scan-Ergebnisse vor unserem inneren Auge)? Dem Hersteller eine erregte Mail mit deutlich zum Ausdruck gebrachtem Mißfallen? Kann man machen, wird aber nicht viel helfen (wenn überhaupt, vielleicht zum nächsten Release mit deutlich reduziertem Änderungs-Volumen). Die Kollegen beim Hersteller sind hier recht resistent.
Nein, abarbeiten muss man den ganzen Kram selber. Und genau hier hat sich der Projekt-Autor (war ich das etwa?) was einfallen lassen, um die Abarbeitung etwas erträglicher zu machen: die gefundenen Treffer sind nach Priorität (oder Gefährdungsstufe) typisiert:
Bedeutung der Suchbegriffe (Begriffs-Typen):
Die Suchbegriffe, mit denen der Code der Scripte und Events durchsucht wird, stammen aus 3 Quellen:
1. ‚__compatibility.inc.php‘ => Begriffs-Typ ‚Comp-Funktion‘ (Pflege und Aktualisierung durch Hersteller)
2. Selektoren-Liste (Script ‚RS IPS Compatibility Selektoren-Container‘) => Begriffs-Typ ‚Selektor‘ (manuelle Pflege durch Anwender)
3. Ausschluss-Liste (Script ‚RS IPS Compatibility Ausschluss-Container‘) => Begriffs-Typ ‚Ausschluss‘ (manuelle Pflege durch Anwender)
Während die ‚__compatibility.inc.php‘ vom Software-Hersteller kommt und mit den IPS-Updates aktuell gehalten wird, ermöglichen die Listen in 2. und 3. eine manuelle Pflege. Dies ist leider erforderlich, da die aus der ‚__compatibility.inc.php‘ extrahierten Suchbegriffe zu ‚false positive‘-Treffern führen können (siehe Typisierung, Punkt 1!).
M.E. ist der Inhalt der ‚__compatibility.inc.php‘ nicht konsistent/nicht konsequent auf dem aktuellen Stand.
Weiterhin gibt es – bereits zu früheren Release-Wechseln abgekündigte Systembefehle, die in der ‚__compatibility.inc.php‘ nicht enthalten sind. Aus diesem Grund wurden 2 weitere Listen, die manuell gepflegt (oder auch geleert) werden können, eingebaut.
Grundsätzlich werden die zu scannenden Objekte immer nach den Suchbegriffen aus allen 3 Quellen durchsucht und bei Treffern in den Ergebnis-Listen ausgegeben.
Jedoch wird zu jedem Treffer auch immer die Quelle mit angegeben (in der Ergebnisliste in Spalte ‚Begriffs-Typ‘). So muss man sich nicht merken, welcher der Suchbegriffe denn welche Priorität in der nachfolgenden Codebereinigung durch den User hat. Das wird eh mühsam genug.
Der Grund für diese Typisierung ist folgender:
Die Priorität der Bereinigung des Codes aus der Ergebnis-Liste kann vom Begriffs-Typ abhängig gemacht werden
1. Treffer ignorieren (Typ ‚Ausschluss‘):
Hierbei handelt es sich um Treffer, die der Anwender bewusst und manuell in die ‚Ausschluss-Liste‘ eingepflegt hat, weil er sich ganz sicher ist, dass diese Suchbegriffe in der aktuellen IPS-Version nicht relevant sind.
Praktisches Beispiel:
In der aktuellen ‚__compatibility.inc.php‘ (IPS 3.4, Stand Dezember 2015) befindet sich die Compatibility-Funktion für die IPS Systemfunktion ‚IPS_GetUptime‘. Folgerichtig weist der RS IPS Compatibility-Scanner Treffer mit diesem Suchbegriff in der Ergebnisliste aus. Nun ist es aber leider so, dass die Systemfunktion, die die IPS_GetUptime() ersetzen soll (nämlich die IPS_GetKernelStartTime()), erst in der IPS-Version 4.0 implementiert ist. Der Besitzer einer IPS 3.4 würde hier also versuchen, ein Script zu korrigieren, was zu diesem Zeitpunkt gar nicht korrigiert werden darf (im Fall der ‚Korrektur‘ würde das sehr wahrscheinlich zu einem Script-Fehler führen).
2. Treffer bei Gelegenheit bearbeiten (Typ ‚Comp-Funktion‘):
Eine gefundene Code-Zeile muss nicht zwingend sofort bereinigt werden. Da es sich um eine IPS Systemfunktion handelt, die über eine Compatibility-Funktion emuliert wird, wird die Code-zeile auch weiterhin funktionieren. Es sei denn, der Hersteller entfernt die Emulation aus der ‚__compatibility.inc.php‘ mit dem nächsten Release (dann sollte man langsam anfangen, diese Zeile an die neuen Gelegenheiten anzupassen)
3. Treffer umgehend bearbeiten (Typ ‚Selektor‘):
Hier ist auf jeden Fall Handlungsbedarf angesagt! Ein solcher Treffer bedeutet: die gefundene Funktion steht weder als IPS-Systembefehl noch als Compatibility-Funktion zur Verfügung. Das Objekt mit dieser Codezeile wird mit hoher Wahrscheinlichkeit auf einen Fehler laufen. Es ist also ratsam, das betroffene Script umgehend zu sanieren.
Die Selektoren müssen manuell gepflegt werden – als immer schön die IPS Migrationshinweise lesen und vergleichen, ob evtl. Systemfunktionen entfernt wurden. Wenn ja: in die Selektoren-Liste (Script ‚RS IPS Compatibility Selektoren-Container‘) einpflegen.
Tool-Unterstützung
Dem Download liegt weiterhin eine Excel-Tabelle bei, mit deren Hilfe die Scan-Ergebnisse besser visualisiert werden können. Eine Kurzbeschreibung zum Umgang mit diesem Tool ist im Excel-Workshet enthalten. Der Gedanke ist hier, dem User zu helfen, die Problemfälle strukturiert durchzugehen, in dem er die in der Excel-Tabelle visualisierten Scan-Ergebnisse auf einem Bildschirm darstellt, während er auf dem anderen Bildschirm in der IPS-Konsole die entsprechenden Objekte bearbeitet.
IPS-Versionen
Gemäß des Script-Konzepts (Identifizieren alter Systembefehle auf Basis der ‚__compatibility.inc.php‚) ist der RS IPS Compatibility Scanner ein gutes Systemwerkzeug, um das eigene IPS-System (aktuell 3.4) auf den nächsten anstehenden Release-Wechsel (dann IPS 4.0) zu scannen. Wenn man einige Details beachtet, sollte das genauso für ältere und zukünftig erscheinende IPS-Releases funktionieren. Da das Projekt nur ganz wenige IPS-Systembefehle nutzt, ist die Wahrscheinlichkeit sehr hoch, dass das Tool zukunftssicher ist.
Getestet habe ich sowohl das Script selbst als auch die Installations-Routine unter IPS 3.4 (Windows) und 4.0 (Windows + Linux, Stand Jan. 2016) – in allen Fällen funktioniert es fehlerfrei und problemlos.
Installation
Das Installer-Script aus dem Download in ein neues IPS-Script einkopieren und ausführen. Das Projekt ist damit installiert und betriebsbereit. In den Containern kann man nun eigene Suchbegriffe eingeben, muss man aber nicht. Zum Start eines System-Scans dann manuell das Script ‚RS IPS Compatibility-Scanner‚ starten.
Möchte man den Scanner regelmäßig und unbeaufsichtigt laufen lassen, so kann man manuell den mitgelieferten Timer konfigurieren und aktivieren. Der RS IPS Compatibility-Scanner läuft dann selbständig durch, legt die Scan-Ergebnisse als .csv im IP-Symcon Rootverzeichnis ab und schickt die Scanergebnisse (incl. CSV) an die erste, im System konfigurierte SMTP-SendMail – Instanz. So hat man nun statt der (früher mal üblichen) Tageszeitung nun den Scanbericht auf dem Frühstückstisch. Kann auch weiterBILDen.
Weitere Versionsinfos
Download
Der Download wird für eingeloggte User unterhalb dieses Beitrages sichtbar
Hi,
ab welchem Release der Version 3.4 läuft dieser Check ?
in #3786 kommt folgende Ausgabe:
Notice: Undefined offset: 1 in C:\IP-Symcon\scripts\21128.ips.php on line 593
Notice: Undefined index: ProfileName in C:\IP-Symcon\scripts\21128.ips.php on line 681
Notice: Undefined index: ProfileType in C:\IP-Symcon\scripts\21128.ips.php on line 711
Warning: Profilname darf nicht leer sein in C:\IP-Symcon\scripts\21128.ips.php on line 711
Notice: Undefined index: Prefix in C:\IP-Symcon\scripts\21128.ips.php on line 713
Notice: Undefined index: Suffix in C:\IP-Symcon\scripts\21128.ips.php on line 713
Warning: Variablenprofil # existiert nicht in C:\IP-Symcon\scripts\21128.ips.php on line 713
Notice: Undefined index: MinValue in C:\IP-Symcon\scripts\21128.ips.php on line 715
Notice: Undefined index: MaxValue in C:\IP-Symcon\scripts\21128.ips.php on line 715
Notice: Undefined index: StepSize in C:\IP-Symcon\scripts\21128.ips.php on line 715
Abort Processing during exceed of maximal ErrorCount: Variablenprofil # existiert nicht
Error in Script C:\IP-Symcon\scripts\21128.ips.php on Line 715
Gruss
Bernd
Hi Bernd, das Script läuft auf allen aktuellen IPS-Plattformen. Also auf 3.4 (incl.#3786), 4.0 WIN und 4.0 Linux. Bist Du sicher, dass das Script in den Fehlermeldungen (#21128) der Compatibility-Scanner ist? Die Fehlermeldungen passen nicht zum Script-Code….
Also die Script ID ist die des RS Scanners.
Ich schaue mal. Mache mal ein Update des IPS und dann schauen wir weiter. Man weiss ja, wie Du weisst, nie was unter der Haube alles verändert wurde….
Gruss
Bernd
Hi,
Auch nach Update auf die 3.4 Stable kommen die gleichen Meldungen hoch.
Ist aber nicht so wichtig. Mir ging es eher um das Update des Regen Scriptes und das läuft super durch.
Gruß
Bernd
Jetzt ist es aber eh so, dass ich wegen der mangelnden Chromoflex Unterstützung wohl eh nicht zeitnah auf die 4.0 wechseln können werde….daher habe ich keine Eile.
Hallo,
würde mich für den Compatibilityscanner interessieren. Downloaden kann ich ja nur, wenn ich eingeloggt bin. Wo kann ich mich denn einloggen?
Gruß,
Hugo
Hallo Raketenschnecke,
ich habe Interesse an deinem Projekt. Nachdem ich nun gespendet habe, (was ich übrigens auch richtig finde, denn es steckt auch viel Arbeit in dem Projekt) habe ich die Frage, wie komme ich an meine Daten zum einloggen.
Vielen Dank für die Mühe und mach weiter so
einfachich
Hi einfachich,
ich hatte Dir heute Nachmittag eine Mail mit einer Frage zum Account geschickt (eben nochmal). Aber beim genaueren Lesen Deines Kommentars hat sich meine Frage beantwortet ;-)
Zugangs-Informationen folgen sogleich via eMail.
Hallo Raketenschnecke
Also installiert – angestoße – und Läuft
Danke – klasse Arbeit
(Wenn auch das Ergebnis erstmal erschreckt)
einfachich
hallo Raketnschnecke,
würde gerne den Compatibility Scanner nutzen und ahbe entsprechend gerade gespendet. Wie erhalte ich die Login Daten?
Danke, Dirk
Hi Dirk,
da die Account-Anlage manuell erfolgt, nachdem PayPal mir die Spenden-Info geschickt hat (diese Mail kann mitunter erst mehrere Stunden später kommen), kann es manchmal ein wenig dauern ;-)
Heute ging es etwas schneller, ich habe den Account gegen 12:00 Uhr angelegt, Infomail ist raus. Falls nicht angekommen, einfach melden ;-)
danke, hat alles geklappt! :-)