Weitere Konfigurationsoptionen
Zentrales Protokollieren von Fehlermeldungen
Wenn opsi-script im Kontext des opsi-service gestartet wird, werden die Protokoll-Informationen über den opsi-web-service an den opsi-server gesendet.
Zentrale Konfiguration über opsi Configs (Host Parameter)
Über opsi Configs (Host-Parameter
) kann das Verhalten des opsi-script (z.B. beim Logging) beeinflusst werden:
-
opsi-script.global.debug_prog
: boolean
Wenn false, werden Logmeldungen, welche zum Debuggen des opsi-script selbst dienen, nicht ausgegeben, soweit es sich nicht um Warnungen oder Fehler handelt.
Default: false
Damit werden die Logdateien entlastet und nur noch Meldungen, die Skript-relevant sind, stehen in den Logdateien. Die Umstellung der entsprechenden Logmeldungen im Quellcode des opsi-script ist noch nicht abgeschlossen und wird bei ca. 1700 Log-Aufrufen auch noch etwas dauern.
-
opsi-script.global.debug_lib
: boolean
Wenn false, so werden Logmeldungen aus lokalen Funktionen, welche aus Libraries importiert wurden, nur ausgegeben, soweit es sich um Warnungen oder Fehler handelt.
Der Wert kann innerhalb eines Skriptes mit der AnweisungSetDebug_Lib
überschrieben werden.
Default : false
siehe auch SetDebugLib
-
opsi-script.global.default_loglevel
: intstr
Setzt (überschreibt) den Standard default Loglevel von opsi-script.
Dieser Config hat keinen Einfluss auf Skripte, bei denen der Loglevel persetLogLevel
explizit gesetzt worden ist.
Default : '7'
siehe auch SetLogLevel
siehe auch [opsi-script-configs_force_min_loglevel]
-
opsi-script.global.force_min_loglevel
: intstr
Erzwingt einen minimalen Loglevel.
Dies dient dazu, bei der Entwicklung und/oder Fehlersuche gezielt und temporär für einzelne Clients den Loglevel zu erhöhen ohne hierzu Anpassungen am Skript vornehmen zu müssen.
Default: '0'
siehe auch SetLogLevel
siehe auch [opsi-script-configs_default_loglevel]
-
opsi-script.global.ScriptErrorMessages
: boolean
Wenn false, werden Syntax-Fehlermeldungen nicht interaktiv ausgegeben sondern nur in die Logdatei geschrieben. Im Produktivbetrieb ist es sinnvoll, dass dieser Parameter false ist. Daher ist der Default für diesen Config false. Der Default von opsi-script für diesen Parameter ist (aus historischen Gründen) true. Im Servicekontext überschreibt der Config den Default von opsi-script. Außerhalb des Servicekontext gilt der Default von opsi-script. Diese Default-Werte können innerhalb eines Skriptes mit der AnweisungScriptErrorMessages
überschrieben werden.
Default: false
siehe auch : ScriptErrorMessages
-
opsi-script.global.AutoActivityDisplay
: boolean
Wenn true, wird während des Laufs von externen Prozessen (winbatch,ShellScript,execwith Sektionen) ein (marquee) Fortschrittsbalken (der Endlos durch läuft) angezeigt.
Default: true
siehe auch : AutoActivityDisplay
-
opsi-script.global.supresssystemencodingwarning
: boolean
Wenn true, wird die Warnung:Encoding=system makes the opsiscript not portable between different OS
unterdrückt.
Default: false
siehe auch : encoding -
opsi-script.global.reverseproductorderbyuninstall
: boolean
Wenn true, wird die ProductListe umsortiert, so dass uninstall-Aktionen als erstes und in umgekehrter Reihenfolge der Installation durchgeführt werden.
Default: false
-
opsi-script.global.log_rotation_count
: string (number) // seit 4.12.4.29
Gibt die Anzahl der lokal auf dem Client gesicherten Backups desopsi-script.log
an. (opsi-script_0.log, opsi-script_1.log, …
)
Default = 8 ; Maximal = 999
-
opsi-script.global.writeProductLogFile
: boolean // seit 4.12.4.35
Wenn true, wird auf dem Client im Unterverzeichnislastprodlogs
des opsi-script Logverzeichnisses ( z.B.c:\opsi.org\log\lastprodlogs
) für jedes opsi-Produkt eine eigene Logdatei geschrieben. Der Name der Logdatei ist<productId>.log
. Es existiert dann für jedes Produkt der Log des letzten Skriptlaufs. Im Fall, dass ein Skript Reboots innerhalb des Skriptes beinhaltet, so enthält dieses Log nur den Teil nach dem letzten Reboot.
Default: false
-
opsi-script.global.testsyntax
: boolean // seit 4.12.7.0
Wenn true, werden die Skripte von opsi-script imtestsyntax
-Modus ausgeführt.
Default: false
siehe auch: [opsi-script-testsyntax]
Skinnable 'opsi-script' [W/L/M]
Ab Version 3.6 verfügt 'opsi-script' einen veränderbare Oberfläche. Seine Elemente liegen im Unterverzeichnis winstskin des Verzeichnisses, in dem der ausgeführte opsi-script liegt. Die editierbare Definitionsdatei ist skin.ini.
Seit Version 4.12.4.15 sucht der 'opsi-script' nach dem zu verwendenden Skin Verzeichnis in folgender Reihenfolge, wobei das erste Verzeichnis, welches eine skin.ini enthält verwendet wird:
Windows:
%OpsiScriptDir% = C:\Program Files (X86)\opsi.org\opsi-client-agent\opsi-script
-
%OpsiScriptDir%\..\custom\customskin
-
%OpsiScriptDir%\skin
-
%OpsiScriptDir%\winstskin
(for backward compatibility)
Linux:
%OpsiScriptDir% = /opt/opsi-script
-
'/usr/share/opsi-script/skin'
-
'/usr/share/opsi-script/customskin' (for backward compatibility)
-
%OpsiScriptDir%/skin
siehe auch: opsi-script-linux-path
macOS:
%OpsiScriptDir% = /Applications/opsi-script/Contents/macOS
-
'/usr/share/opsi-script/skin'
-
%OpsiScriptDir%/../Resources/skin
siehe auch: opsi-script-macos-path
Mit dem Befehl SetSkinDirectory
kann ein SkinDirectory auch im Script angegeben werden.
Wird bei diesem Befehl ein leerer oder ungültiger Pfad angegeben, so wird der Defaultpfad verwendet.
Beispiel:
SetSkinDirectory "%ScriptPath%\testskin"
sleepseconds 1
SetSkinDirectory ""
Anpassung an Corporate Identity
Alle graphischen Komponenten des opsi-script basieren auf den Darstellungskomponenten zum Anzeigen von Grafiken und werden auf die selbe Weise angepasst.
Farben können auf drei unterschiedliche Weise angegeben werden: Als symbolischer Name (clRed
), als Hexadezimalwert ($FF00FF
) oder als rgb Wertliste ((255,0,0)
).
Ein Hilfsprogramm zur Auswahl von Farben und deren richtigen Schreibweise ist der opsi color choose.
Als Hintergrund Grafikformate kommt eine Vielzahl unterschiedlicher Bitmap Formate wie .bmp, .png, jpeg usw in Frage. All dies Formate sind wieder Containerformate, dh. z.B. PNG ist nicht unbeding gleich PNG. Evtl ist das eine Darstellbar und das andere nicht. Ein Hilfsprogramm mit dem Sie schnell prüfen können ob eine gegeben Bitmap Grafik korrekt angezeigt werden wird, ist der opsi bitmap viewer.
Die Dateien, die Sie beim opsi-script anpassen können finden Sie im Verzeichnis /var/lib/opsi/depot/opsi-client-agent/files/opsi-script/skin
:
-
bg.png
Die Default Hintergrundgrafik des 'opsi-script' in welche dann zur Laufzeit Textmeldungen und Produktlogos eingeblendet werden. Der Name kann in der Dateiskin.ini
angepasst werden. -
skin.ini
Die Konfigurationsdatei in der festgelegt ist, an welcher Stelle, mit welchem Font und Farbe Textmeldungen eingeblendet werden. Und ab opsi-script Version XY welches Thema geladen werden soll.
Seit opsi-script Version 4.12.4.35 besteht die Möglichkeit zwischen zwei Themen (Theme) zu wählen. Ist Theme = default oder nichts angegeben wird das Standard-Aussehen von opsi-script beibehalten wie Sie es kennen und Sie haben über die skin.ini folgende detaillierte Einstellmöglichkeiten (hier belegt mit den ausgelieferten Default-Werten):
[Form]
Theme = default #diese Zeile kann hier auch weggelassen werden
Color = $00FFB359
[LabelVersion]
Left = 20
Top = 367
Width = 85
Height = 16
FontName = Arial
FontSize = 7
FontColor = $00E2A973
FontBold = false
FontItalic = false
FontUnderline = false
[LabelProduct]
Left = 260
Top = 100
Width = 315
Height = 100
FontName = Arial
FontSize = 32
FontColor = $00E7E7E7
FontBold = false
FontItalic = false
FontUnderline = false
[LabelInfo]
Alignment=Center
Left = 60
Top = 260
Width = 520
Height = 24
FontName = Arial
FontSize = 11
FontColor = $00E7E7E7
FontBold = true
FontItalic = false
FontUnderline = false
[LabelDetail]
Left = 60
Top = 285
Width = 520
Height = 20
FontName = Arial
FontSize = 8
FontColor = $00E7E7E7
FontBold = false
FontItalic = false
FontUnderline = false
[LabelCommand]
Left = 60
Top = 310
Width = 520
Height = 20
FontName = Arial
FontSize = 8
FontColor = $00E7E7E7
FontBold = false
FontItalic = false
FontUnderline = false
[LabelProgress]
Left = 60
Top = 335
Width = 520
Height = 40
FontName = Arial
FontSize = 8
FontColor = $00E7E7E7
FontBold = false
FontItalic = false
FontUnderline = false
[ActivityBar]
Left = 60
Top = 350
Width = 420
Height = 10
BarColor = clBlue
[ImageBackground]
File = bg.png
[ImageProduct]
File = product.png
Left = 40
Top = 65
Width = 160
Height = 160
[Image1Over]
File =
Left = 0
Top = 0
Width = 0
Height = 0
[Image2Over]
File =
Left = 0
Top = 0
Width = 0
Height = 0
[ProgressBar]
Left = 275
Top = 160
Width = 280
Height = 20
BarColor = $00E7E7E7
StartColor = $00E7E7E7
FinalColor = $00E7E7E7
ShapeColor = $00E7E7E7
Shaped = true
ShowFullBlock = false
RoundCorner = true
BlockSize = 10
SpaceSize = 3
Cylinder = true
Glass = true
Setzen sie Theme = WindowsSimple
um nur eine einfache Oberfläche beim Installieren von opsi-Produkten anzuzeigen. Diese ähnelt der von Windows verwendeten wenn Betriebssystemupdates installiert werden. Es gibt folgende Einstellmöglichkeiten (hier belegt mit den ausgelieferten Default-Werten):
[Form]
Theme = WindowsSimple #Diese Zeile ist hier nötig und darf nicht geändert werden
Color = clHotLight
[LabelInfo]
Caption = Software wird installiert. Bitte warten.
Schutz Ihrer Änderungen vor Updates: Das custom Verzeichnis
Möchten Sie Änderungen welche Sie an den oben genannten Dateien durchgeführt haben, davor schützen, das selbige beim Einspielen einer neuen Version des opsi-client-agenten verloren gehen, so können Sie hierfür das custom
Verzeichnis /var/lib/opsi/depot/opsi-client-agent/files/custom
(früher /var/lib/opsi/depot/opsi-client-agent/files/opsi/custom
) verwenden. Das komplette custom
Verzeichnis wird bei der Installation einer neuen Version des opsi-client-agenten gesichert und wieder hergestellt, so das hier gemachte Änderungen nicht verloren gehen.
-
custom/opsi-script/skin/.
wird bei der Installation des opsi-client-agent auf dem Client nachC:\Program Files (x86)\opsi.org\opsi-client-agent\opsi-script\skin
kopiert.
'opsi-script' encoding [W/L/M]
Einige Hinweise zu den verwendeten Begriffen:
-
ASCII, plain ASCII
ASCII ist eine Abkürzung von: American Standard Code for Information Interchange
'plain ascii': 7 Bit pro Zeichen; kann 128 verschiedene Zeichen darstellen. Hier enthalten sind die arabischen Ziffern, die Zeichen des lateinischen Alphabetes in Groß- und Kleinschreibung sowie eine Reihe von Sonder- und Steuerzeichen.
Diese 128 Zeichen finden sich auch in den nachfolgend beschriebenen Erweiterungen wieder. -
ANSI, Codepages
Verwendet 8 Bit pro Zeichen (also ein Byte). Damit können Die ersten (unteren) 128 Zeichen entsprechen plain ASCII. Die oberen 128 Zeichen sind für unterschiedliche Alphabete in unterschiedlichen 'Codepages' definiert. Bekannte 'code pages':
Windows-1252 = CP1252 = ISO 8851-1 = Western Europe code page.
Die 256 Zeichen von CP1252 sind auch die Basis von Unicode UTF-16.
'ANSI' ist eine Abkürzung von: American National Standards Institute:
https://stackoverflow.com/questions/701882/what-is-ansi-format :
'ANSI encoding is a slightly generic term used to refer to the standard code page on a system, ( … )The name "ANSI" is a misnomer, since it does not correspond to any actual ANSI standard, but the name has stuck.'
In Deutsch:
'ANSI encoding ist ein verbreiteter Begriff um sich auf die Standard code page eines Systems zu beziehen. (….) Der Name "ANSI" ist allerdings falsch und irreführend, da es keinen entsprechenden ANSI-Standard gibt. Trotzdem ist der Begriff allgemein üblich.'
Was ist dann mit dem Begriff ANSI encoding gemeint ?
https://wiki.freepascal.org/Character_and_string_types#AnsiChar says:
'A variable of type AnsiChar, also referred to as char, is exactly 1 byte in size, and contains one "ANSI" (local code page) character.'
In Deutsch:
'Ein ANSI Zeichen hat eine Länge von einem Byte und ist gemäß der lokalen code page definiert.'
Die Probleme mit der Verwendung von Codepages sind:-
Für unterschiedliche Regionen in der Welt müssen unterschiedliche Codepages verwendet werden.
-
Es können nur maximal 255 Zeichen dargestellt werden aber viele Alphabete haben deutlich mehr Zeichen.
-
-
Unicode, UTF-8
'Unicode' ist (wie 'ANSI') eine Encodingfamilie (nicht ein Encoding).
Der bedeutendste Unterschied im Vergleich zu code pages ist, das um ein Zeichen zu codieren hier bis zu 4 Bytes verwendet werden. Damit können 'alle' Alphabete in einem Encoding untergebracht werden.
Die wichtigsten Mitglieder der 'Familie' Unicode sind:-
UTF-16-LE
(auch teilweise bezeichnet als 'Windows Unicode'):
Hier wird für jedes Zeichen mindestens 2 Byte (bis zu 4 Byte) verwendet. Das 'LE' steht für 'Little Endian' und gibt Auskunft über die Reihenfolge der Bytes. (Zeichen 'n' : LE='6E 00', BE='00 6E'). -
UTF-8
:
Verwendet für alle 'plain ASCII' Zeichen 1 Byte. Für alles was darüber hinaus geht werden 2 bis 4 Byte verwendet.
Dies bedeutet auch, das eine Datei welche nur 'plain ASCII' Zeichen enthält es binär keinen Unterschied macht, ob diese nun als 'UTF-8' oder 'cp1252' abgespeichert worden ist. -
BOM
Eine Datei mit einem 'Unicode' encoding kann (muß aber nicht) in den ersten 4 Byte eine Information über das verwendete (unicode-)Encoding enthalten - den 'BOM' ('Byte Order Mark'). opsi-script erkennt und verwendet einen 'BOM' so er vorhanden ist.
-
Das Default Encoding für ein Script ist das Encoding das Systems auf dem der opsi-script läuft. D.h. auf einem Griechischen System wird das script mit unter Windows mit cp1253 interpretiert während das selbe Script auf einem deutschem Windows System mit cp1252 und auf einem Linux oder macOS System mit UTF-8 interpretiert wird.
Wir empfehlen dringend alle opsiscript Dateien in UTF-8 encoding zu erzeugen und die Zeile encoding=utf8 in die Datei einzufügen.Dies macht Ihre Dateien besser portierbar. Siehe hierzu auch den nachfolgenden Abschnitt. |
-
encoding=
<encoding>
Seit Version 4.11.4.1 kann bei einem Script (egal ob Hauptscript, sub, include oder library) das encoding auch angegeben werden. Dazu gibt es den Befehl:
encoding=
<encoding>
Dieser Befehl kann an einer beliebigen Stelle in der Scriptdatei stehen.
Wird dieser Befehl nicht gefunden, so wird zunächst davon ausgegangen, das das Encoding der Datei dem Systemencoding des laufenden Betriebssystems entspricht. Unter Linux und macOS wäre dies UTF-8. Unter Windows ist dies ein cp* abhängig von der Lokalisierung. In Westeuropa z.B. cp1252.
Wenn die einzulesende Datei Umlaute enthält (also nicht nur 'plain ASCII' ist), so führt das fehlen der Zeileencoding=utf8
zu der Warnung:
'Encoding=system makes the opsiscript not portable between different OS'.
Diese Warnung kann unterdrückt werden durch den config (Hostparameter):
opsi-script.global.supresssystemencodingwarning = true
.
siehe auch [opsi-script-configs_supresssystemencodingwarning]
Wenn die einzulesende Datei Umlaute enthält (also nicht nur 'plain ASCII' ist) und es einen Widerspruch zwischen dem detektierten Encoding (z.B. über ein BOM) und dem impliziten Encodingsystem
bzw. dem perencoding=
angegebenen Encoding gibt, so wird folgende Warnung in das Log geschrieben:
'Warning: Given encodingString <> is different from the expected encoding <>'
Bei der Verwendung vonencoding=
<encoding>
kann <encoding> ist eines der folgenden Werte sein:
encoding | erlaubter alias | Bemerkung |
---|---|---|
system |
verwende encoding des laufenden OS |
|
auto |
versuche das encoding zu erraten. |
|
UTF-8 |
utf8 |
|
UTF-8BOM |
utf8bom |
|
Ansi |
ansi |
8 Bit Encoding mit Codepage |
CP1250 |
cp1250 |
Zentral- und osteuropäische Sprachen |
CP1251 |
cp1251 |
Kyrillisches Alphabet |
CP1252 |
cp1252 |
Westeuropäische Sprachen |
CP1253 |
cp1253 |
Griechisches Alphabet |
CP1254 |
cp1254 |
Türkisches Alphabet |
CP1255 |
cp1255 |
Hebräisches Alphabet |
CP1256 |
cp1256 |
Arabisches Alphabet |
CP1257 |
cp1257 |
Baltische Sprachen |
CP1258 |
cp1258 |
Vietnamesische Sprachen |
CP437 |
cp437 |
Die ursprüngliche Zeichensatztabelle des IBM-PC |
CP850 |
cp850 |
"Multilingual (DOS-Latin-1)", westeuropäische Sprachen |
CP852 |
cp852 |
Slawische Sprachen (Latin-2), zentraleuropäische und osteuropäische Sprachen |
CP866 |
cp866 |
Kyrillisches Alphabet |
CP874 |
cp874 |
Thai Alphabet |
CP932 |
cp932 |
Japanische Schreibsysteme (DBCS) |
CP936 |
cp936 |
GBK für chinesische Kurzzeichen (DBCS) |
CP949 |
cp949 |
Hangul/Koreanische Schriftzeichen (DBCS) |
CP950 |
cp950 |
Chinesische Langzeichen (DBCS) |
ISO-8859-1 |
iso8859-1 |
Latin-1 |
ISO-8859-2 |
iso8859-2 |
Latin-2 |
KOI-8 |
koi8 |
Kyrillisches Alphabet |
UCS-2LE |
ucs2le, utf16le |
(UTF-16-LE, Windows Unicode Standard) |
UCS-2BE |
ucs2be, utf18be |
(UTF-16-BE) |
siehe auch : [reencodestr]
siehe auch : [reencodestrlist]
siehe auch : [strLoadTextFileWithEncoding]
siehe auch : [loadUnicodeTextFile]
siehe auch : [loadTextFileWithEncoding]
Quellen siehe auch: