Reset Script Flags / Einmalig ausführen

Alle Fragen rund um die ACMP Client Commands
Antworten
kratz
Beiträge: 33
Registriert: Di Sep 02, 2008 8:40 am

Hallo zusammen,

eine Verständnisfrage zur Commandausführung über Container:

Wenn bei einem Containercommand der Haken bei "Einmalig ausführen" gesetzt ist, wo ist denn dann dieses Flag gesetzt? In der Datenbank oder auf dem Client?

In einem Command habe ich eine Fehlerabfrage eingebaut nach dem Schema: Exitcode <0> -> Send SMTP MAIL + Reset script flags weil ich mir erhofft habe dass dann der Zähler für "Einmalig ausführen" wieder zurückgesetzt wird. Dem scheint aber nicht so zu sein.

Gibt es eine Möglichkeit diese Anforderung umzusetzen? (Also dass im Fehlerfall das Command nicht als ausgeführt gilt)

Danke schonmal vorab.

MFG
M. Kratz
RKorth
Beiträge: 15
Registriert: Do Mär 08, 2007 5:10 pm

Sehr geehrter Herr Kratz,

a)
"In einem Command habe ich eine Fehlerabfrage eingebaut nach dem Schema: Exitcode <0> -> Send SMTP MAIL + Reset script flags weil ich mir erhofft habe dass dann der Zähler für "Einmalig ausführen" wieder zurückgesetzt wird. Dem scheint aber nicht so zu sein."

Momentan ist es leider so, dass auch ein durch die Logik des Commands unterbrochenes Script als (erfolgreich) ausgeführt gilt. In meinen Augen vertretbar (eins dabei zugekniffen).
Sogar ein durch eine Condition erst gar nicht zur Ausführung gelangtes Script, gilt als (erfolgreich) ausgeführt. Auch das ist vertretbar. Momentan haben wir aber noch zu wenig Status, nämlich derer 2: ausgeführt/ nicht ausgeführt.
Was uns für die nähere Zukunft vorschwebt sind folgende Status, was aber noch konzeptioniert werden muss:
- ausgeführt
- ausgeführt mit Logikfehler (Businesslogik des Commands)
- nicht ausgeführt
- nicht ausgeführt wegen Nichterfüllung der Condition
- ... Anregungen erwünscht

b)
"Wenn bei einem Containercommand der Haken bei "Einmalig ausführen" gesetzt ist, wo ist denn dann dieses Flag gesetzt? In der Datenbank oder auf dem Client?"

Den speichern wir in der Tabelle "SYS_SCRIPT_TIMINGS". Die hat als Spalte eine "TimingID".
Wenn es einen Script-Task gibt (Task im Script selbst), dann ist die TimingID gleich der ScriptID.
Wenn ein Container einen Start-Task hat, dann entspricht sie der ContainerID. Die Spalte "StartUpOnce" beinhaltet die gesuchte Info.
Über ein SQL-Update-Statement kann man diese (auch über ein CC) anpassen:
<SQL>
update SYS_SCRIPT_TIMINGS
set StartUpOnce = 0
where TimingID = '<CONTAINERID>'
</SQL>

ACHTUNG: Der "neue" Task, liegt ja zunächst auf dem Server und muss für den Client aktualisiert werden (Clienttask "CC Scanner"), d.h. er muss auf den Client transportiert werden.
"In der Datenbank oder auf dem Client?"
Er liegt zuerst auf dem Server und wird dann auf den Client übertragen.
In der Datei "ScriptStartList.ini" liegen die für den Client aktuellen ScriptTask unter "<ACMPClientVerzeichnis>\DB\". Gibt es ein ContainerTask findet man die Einstellungen unter der passenden ContainerID. In diese Datei schaut der Client jede Minute, ob es was wann zu tun gibt.

c)
"Gibt es eine Möglichkeit diese Anforderung umzusetzen? (Also dass im Fehlerfall das Command nicht als ausgeführt gilt)"
1) Siehe a) - also so ohne weiteres nicht.
2) Vielleicht wäre ein Lösungsansatz, dass im Fehlerfall „einfach“ die „ScriptStartList.ini“ frisiert wird (Siehe b).
Dazu ist es nötig, den jeweiligen Value (!) des DONE-Eintrags (im nachfolgenden Beispiel „TimeFrameDone“) und den LastScan-Eintrag zu löschen.
Also z.B. – je nach Taskeinstellungen:

LastChange=0
Version=0
LastScan=
StartNow=0
StartUpDone=0
TimeFrameDone=

Wie Sie sehen, nicht wirklich einfach. Option a) scheint da vernünftiger zu sein ;-)

Beste Grüße aus Soest
Antworten