isFatalError <String> funktioniert sporadisch nicht

Antworten
Valentino-46
Beiträge: 284
Registriert: 05 Aug 2011, 14:24

isFatalError <String> funktioniert sporadisch nicht

Beitrag von Valentino-46 »

Hallo zusammen,

wir verwenden neuerdings häufiger die Funktion isFatalError, allerdings mit String Funktion. Leider funktioniert das sporadisch nicht richtig?
Kann es sein, dass nur bestimmte Textlängen erlaubt sind? Gibt es sonst irgendwelche Einschränkungen?!

Code: Alles auswählen

DefVar $FatalErrorText$
set $FatalErrorText$ = "fatal"

if ( $ExitCodeLine$ = "" )
	logError "Wenn er das obere Suchwort NICHT findet dann geht er hier rein! - ExitCode: " + $ExitCodeLine$
	logError "Diese Java Version wurde nicht sauber installiert!?"
	set $FatalErrorText$ = "Java failed"
	isFatalError $FatalErrorText$
endif
Wäre über jeden Tipp dankbar. In der Doku finde ich dazu aktuell nichts.
Vielen Fank!
Mit freundlichen Grüßen,
Valentino
Jan.Schmidt
Beiträge: 439
Registriert: 08 Jul 2017, 12:02

Re: isFatalError <String> funktioniert sporadisch nicht

Beitrag von Jan.Schmidt »

Hi,

ich vermute das ist ehr an etwas anderem geschuldet...
probier das mal so herum:

Code: Alles auswählen

DefVar $FatalErrorText$
set $FatalErrorText$ = ""

if ( $ExitCodeLine$ = "" )
	logError "Wenn er das obere Suchwort NICHT findet dann geht er hier rein! - ExitCode: " + $ExitCodeLine$
	logError "Diese Java Version wurde nicht sauber installiert!?"
	set $FatalErrorText$ = "Java failed"
endif

if not ( $FatalErrorText$ = "" )
	isFatalError $FatalErrorText$
endif

Valentino-46
Beiträge: 284
Registriert: 05 Aug 2011, 14:24

Re: isFatalError <String> funktioniert sporadisch nicht

Beitrag von Valentino-46 »

Hi Jan,

vielen Dank für die Hilfe. Ich habe das jetzt mal umgeschrieben, aber noch nicht ganz verstanden was der Unterschied zu meinem Code ist?
Aktuell trat wieder ein Problem auf, aber er hat den Text nicht geschrieben. In der Log war das:

Code: Alles auswählen

 If
   ErrorsOccuredSinceMark > 0   <<< result true
 Then
   Set  $FatalErrorText$ = "ErrorsOccuredSinceMark"
     The value of the variable "$FatalErrorText$" is now: "ErrorsOccuredSinceMark"
   Error level set to fatal
   Process aborted
 ___________________
 script finished: failed
 1 error
 0 warnings
der tatsächliche Code war:

Code: Alles auswählen

if ErrorsOccuredSinceMark > 0
	set $FatalErrorText$ = "ErrorsOccuredSinceMark"
	isFatalError $FatalErrorText$
endif
Hier sieht man ja, dass der Text definitiv in die Variable geschrieben wurde und sie somit nicht "" leer ist!?
Und danach wurde ja auch isfatalerror aufgerufen!? Verstehe ich irgendwie nicht was ich falsch mache?

Danke nochmal,
Mit freundlichen Grüßen,
Valentino
Jan.Schmidt
Beiträge: 439
Registriert: 08 Jul 2017, 12:02

Re: isFatalError <String> funktioniert sporadisch nicht

Beitrag von Jan.Schmidt »

Verstehe ich irgendwie nicht was ich falsch mache?
ich allerdings auch nicht - aber vermutlich liegt es daran, dass du

Code: Alles auswählen

Set  $FatalErrorText$ = "ErrorsOccuredSinceMark"
isFatalError $FatalErrorText$   
das da machst.

Ich weis ehrlich nicht welche Sprache das ist - das ist irgendeine Abart von ? und ?? :lol:

Probier halt mal aus, das so zu umbiegen:

Code: Alles auswählen

Set  $FatalErrorText$ = "'ErrorsOccuredSinceMark'"
isFatalError $FatalErrorText$   
oder so

Code: Alles auswählen

Set  $FatalErrorText$ = "ErrorsOccuredSinceMark"
isFatalError "$FatalErrorText$"  
ich nutze das auch ziemlich oft, aber nie mit Variablen, sondern in einzelnen

Code: Alles auswählen

if
\snip
/snap
isFatalError "ziemlich langer Text wie z.B Kein Openvpn gefunden" oder "Dienst Schiessmichtod nicht installiert"  
endifs
Also immer direkt mit "" - entweder musst du die maskieren siehe Idee #1 oder #2 oder so umbauen, dass du die Variable nicht nutzt, sondern da den Abbruch machst, wo der Fehler "gefunden" wird.
Valentino-46
Beiträge: 284
Registriert: 05 Aug 2011, 14:24

Re: isFatalError <String> funktioniert sporadisch nicht

Beitrag von Valentino-46 »

Hi Jan,

vielen Dank für die Rückmeldung. Ich habe auch schon ein wenig mit den Anführungszeichen usw. gespielt.
Mich würde das Thema auch nicht so irritieren, wenn es nicht manchmal funktionieren würde und manchmal eben nicht :-)

Die "Sprache" ist ja eigentlich ganz normale OPSI Script Sprache?

Was ich halt damit bezwecke, dass ich mit Variablen arbeite ist, dass ich viele verschiedene Fehlerprüfungen in den Scripten laufen habe und ganz unten fange ich alle Fehler die ich gefunden habe auf und überlege, welcher Fehler ein fatal bekommt und welcher nicht. Und dann gebe ich den Text der Variable mit, die eben der Auslöser war. So sehe ich sofort und auf anhieb im OPSI-configed, welcher Fehler der Auslöser war.
Da wird auf spezielle Softwarefehler geprüft und die kann ich dann direkt auf einen Blick über den configed auf setup setzen und beheben. Das spart enorm Zeit.
Aber ja irgendwas ist im Busch, dass es manchmal geht und manchmal nicht.

Danke dir aber für deine Geduld!
Grüße Valentino
Jan.Schmidt
Beiträge: 439
Registriert: 08 Jul 2017, 12:02

Re: isFatalError <String> funktioniert sporadisch nicht

Beitrag von Jan.Schmidt »

Valentino-46 hat geschrieben: 25 Mär 2022, 11:47 Die "Sprache" ist ja eigentlich ganz normale OPSI Script Sprache?
:D Jaja ich weiss aber was steckt dahinter?
Genau das ist ja immer die Frage, wenns um so kleinigkeiten geht.

Am ehesten erinnert mich das ganze an kixtart

angenommen die Sprache kann ansi - dann könnte sowas funktionieren - wenn das denn die Ursache wäre

Code: Alles auswählen

Set  $FatalErrorText$ = Chr$(34) + "ErrorsOccuredSinceMark" +Chr$(34)
isFatalError $FatalErrorText$
oder so

Code: Alles auswählen

Set  $FatalErrorText$ = "ErrorsOccuredSinceMark"
isFatalError Chr$(34) + $FatalErrorText$ + Chr$(34) 
alles ungetestet und ohne Ahnung, ob die " überhaupt der Grund sind...
Valentino-46
Beiträge: 284
Registriert: 05 Aug 2011, 14:24

Re: isFatalError <String> funktioniert sporadisch nicht

Beitrag von Valentino-46 »

Hallo nochmal,

um dem ganzen Thema "Variablen" zu entgehen habe ich es nun ohne Variablen gescriptet, ausschließlich mit Texten.
Hier kann ich jetzt folgendes sagen:

Das "sporadisch" könnte damit zusammen hängen, wie das Script ausgeführt wird. Starte ich es "on demand" oder "on demand silent" dann werden die texte angezeigt, startet das Script automatisiert alle 2 stunden, dann glaube ich kommen die texte nicht.

Ein und dasselbe Script übrigens und ich kann es mindestens nachstellen, wieso es mal auf dem Rechner angezeigt wird und mal nicht.

Jetzt ist nur die Frage, wieso es nur bei "on demand" und "on demand silent" die Texte anzeigt.

Das wo es nicht funktioniert ist: event_timer_silentinstall

In den Logs sehe ich übrigens dazu leider nichts auffälliges. Auch den Text sehe ich in den logs nicht, auch nicht bei on demand.
Grüße,
Valentino
Antworten