Das Notes Forum

Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: wittmann_franz am 11.01.12 - 12:23:28

Titel: Probleme mit Agent
Beitrag von: wittmann_franz am 11.01.12 - 12:23:28
Hallo zusammen,

ich habe ein Problem mit einem Agenten, welches sich mir überhaupt nicht erschließt.

Wir signieren Agenten in der Regel mit einem SuperUser.
Das funktioniert überall super außer in diesem Fall:
Um die Agenten nur einmal laufen zu lassen, haben wir vor dem eigentlichen Code eine Abfrage geschrieben, die festlegt ob der Agent überhaupt laufen soll. Das funktioniert nur leider nicht, wenn unser SuperUser den Agenten signiert hat. Er ruft trotzdem das doWork auf, obwohl er vorher das Script verlassen soll. Läßt man die Signatur stehen und trägt unter der Agenten-Sicherheit "Ausführen im Namen von" einen anderen Administrator ein, läuft der Agent so wie er soll.

Ich habe bereits den Abschnitt Sicherheit im Serverdokument bzgl. der beiden User verglichen und keine Unterschiede feststellen können.

Hat irgendjemand eine Idee, wo ich noch drehen muss?

Server 8.5.2
Client 8.5.2
Vielen Dank für Eure Hilfe

 

%REM
   Agent Mail-In Dokumente verarbeiten CLU
   Erstellt
   am: 06.01.2012
   von:
   Beschreibung: Clusterfhähigkeit durch Function doWork
%END REM

Option Public
Option Declare
Use ".AppAuftragMailClass"

Sub Initialize
   Const ADMINSRVDEFAULT = "Mein Server"
   
   Dim sn As New NotesSession
   Dim testdb As New NotesDatabase("", "")
   Dim AdminSRV As String
   Dim nAdminSRV As NotesName
   Dim ExecSRV As String
   Dim thisdb As NotesDatabase
   Dim acl As NotesACL

   Set thisdb = sn.CurrentDatabase
   ExecSRV = thisdb.Server
   
   Set acl = thisdb.ACL
   Set nAdminSRV = sn.Createname(acl.AdministrationServer)
   AdminSRV = nAdminSRV.Canonical

   If AdminSRV = "" Then
      AdminSRV = ADMINSRVDEFAULT
   Else
   End If

   If ExecSRV = AdminSRV Then
      Call doWork ()
   Else
      If testdb.open(AdminSRV, "names.nsf")Then
         GoTo Ausgang
      Else
         Call doWork ()
      End If
   End If
   
Ausgang:   
   
End Sub
%REM
   Function doWork
   Beschreibung: Hier steht der eigentliche Code des Agenten
%END REM
Function doWork
   Dim objErrorContainer As ErrorContainer
   Dim objProtocol As Protocol
   
   Print "Function DoWork gestartet"
   
   Call ProcessMail (objProtocol, False, objErrorContainer)   
   If Not objErrorContainer Is Nothing Then
      If objProtocol Is Nothing Then
         Call objErrorContainer.Send(Nothing)      
      Else
         Call objErrorContainer.Send(objProtocol.NotesDocument)   
      End If
      
   End If
   
End Function
Titel: Re: Probleme mit Agent
Beitrag von: DerAndre am 11.01.12 - 12:31:07
Hi,

was sagt denn der Debugger zu den entsprechenden Inhalten?
Titel: Re: Probleme mit Agent
Beitrag von: wittmann_franz am 11.01.12 - 12:37:04
Ach ja richtig, ich vergass....

der Debugger trägt in die Werte alles richtig ein und geht auch aus dem Script heraus.
Wenn jedoch der Agent über die Serverconsole per tell amgr run usw. oder per Zeitplan gestartet wird, springt das doWork nachwieslich an.

Titel: Re: Probleme mit Agent
Beitrag von: Peter Klett am 11.01.12 - 12:57:09
Habe das Script jetzt recht lange gelesen. An welcher Stelle soll der Agent denn aussteigen und unter welchen Bedingungen? Zwischen den Zeilen habe ich verstanden, dass der Agent nur auf einem der Clusterserver laufen soll.

 If ExecSRV = AdminSRV Then ' Wenn der aktuelle Server der Administrationsserver ist, soll er arbeiten
      Call doWork ()
   Else
      If testdb.open(AdminSRV, "names.nsf")Then 'Wenn er das names auf dem Adminserver öffnen kann, soll er nichts machen? Warum sollte er es nicht öffnen können? Was steckt dahinter?
         GoTo Ausgang
      Else
         Call doWork ()
      End If
   End If

Vielleicht kann dieser spezielle User aus irgendeinem Grund das names auf dem Adminserver nicht öffnen, dann würde er auch laufen. Das steht zumindest in dem Script, wozu, erschließt sich mir nicht. An der Stelle würde ich mal suchen.
Titel: Re: Probleme mit Agent
Beitrag von: Ralf_M_Petter am 11.01.12 - 12:57:59
Kann es nicht sein, dass der einzige Unterschied ist, ob du das Skript auf dem Client oder auf dem Server laufen lässt? Meiner Meinung nach, kannst du auf dem Server nicht Datenbanken auf einem anderen Server öffnen.

Grüße

Ralf
Titel: Re: Probleme mit Agent
Beitrag von: wittmann_franz am 11.01.12 - 13:03:26
Wir fahren zur Wartung der Server diese in regelmäßigen Abständen herunter.
Wenn das der Fall ist, also sprich der vorgesehene Server nicht vorhanden ist,
nur dann soll der Agent auf dem Clusterpartner laufen.
Titel: Re: Probleme mit Agent
Beitrag von: Peter Klett am 11.01.12 - 13:06:35
... Meiner Meinung nach, kannst du auf dem Server nicht Datenbanken auf einem anderen Server öffnen. ...
Seit R5 schon  :)

Wir fahren zur Wartung der Server diese in regelmäßigen Abständen herunter.
Wenn das der Fall ist, also sprich der vorgesehene Server nicht vorhanden ist,
nur dann soll der Agent auf dem Clusterpartner laufen.

Ok, verstanden, dann kann der besagte User vielleicht nicht auf den anderen Server zugreifen? Dazu gibt es m.W. eine Einstellung im Serverdokument (?)
Titel: Re: Probleme mit Agent
Beitrag von: wittmann_franz am 11.01.12 - 13:10:45
doch, doch,
der kann zugreifen.
Du meinst den Abschnitt "Auf Server zugreifen" im Tab Sicherheit im Serverdokument
Und aufs names hat er auch Zugriff
Titel: Re: Probleme mit Agent
Beitrag von: Peter Klett am 11.01.12 - 13:14:31
Nein, ich meine, es gäbe eine Einstellung, die es erlaubt, dass ein periodischer Agent auf einen anderen Server zugreifen kann, vielleicht geht das auch userbezogen. Ich schau auch mal im Adressbuch nach, ob ich das finde
Titel: Re: Probleme mit Agent
Beitrag von: Peter Klett am 11.01.12 - 13:25:45
Ne, habe ich jetzt leider auf die Schnelle auch nicht gefunden (bin auch kein Admin). Ich vermute aber irgendetwas in der Richtung kein Zugriff auf das names des anderen Servers durch den speziellen User. Bleibt nur noch "warum nicht"
Titel: Re: Probleme mit Agent
Beitrag von: wittmann_franz am 11.01.12 - 13:27:51
Meinst Du den Bereich
Serverdokument - Sicherheit - Einschränkungen der Programmierbarkeit:

Agenten signieren, die im Namen anderer ausgeführt werden.
Da steht der Kandidat drin und die anderen Administratoren bei denen es klappt nicht.

AAAAber
beide stehen ein Feld höher auch drin, und das schließt laut Hilfe u.a. das Feld mit ein

??????????
Titel: Re: Probleme mit Agent
Beitrag von: Peter Klett am 11.01.12 - 13:33:27
Ehrlich gesagt, meine ich gar keinen Bereich. Es ist nur ein Gefühl von mir, dass ich meine, mich erinnern zu können, sowas mal gehört zu haben. Administration von Notes ist wirklich nicht mein Kerngeschäft. Aber vielleicht kann das ein Admin bestätigen oder eben auch nicht, dann brauchst Du da nicht weiter zu suchen.
Titel: Re: Probleme mit Agent
Beitrag von: Ralf_M_Petter am 11.01.12 - 13:35:49
Schau doch mal in das Feld Vertrauenswürdige Server (Serverdokument unter Sicherheit ganz unten). Hier sollte der Server der zugreifen soll stehen. Sonst ist wie ich gesagt habe meiner Meinung nach von einem Server auf einem anderen kein Zugriff möglich.
Titel: Re: Probleme mit Agent
Beitrag von: koehlerbv am 11.01.12 - 14:01:46
Ralf, das ist vollkommen korrekt so. Der Name des Signierers und des "Run in behalf of" spielen bei Server-Server-Zugriff übrigens keine Rolle.

Peter: Korrekt, die trusted servers wurden mit R5 eingeführt, vorher war der Zugriff von Server zu Server nicht möglich.

Bernhard
Titel: Re: Probleme mit Agent
Beitrag von: wittmann_franz am 11.01.12 - 14:09:09
Stelle die betroffenen Serverdokumente gerade so ein und plane Serverneustarts für heute nacht.

Teile Euch dann morgen die Ergebnisse der Tests mit.

Vielen Dank auf jeden Fall schon mal für Eure Mühe
Titel: Re: Probleme mit Agent
Beitrag von: Ralf_M_Petter am 11.01.12 - 14:15:03
Normalerweise sollte für so eine Änderung kein Serverneustart nötig sein.
Titel: Re: Probleme mit Agent
Beitrag von: wittmann_franz am 12.01.12 - 07:18:26
Guten Morgen,

jetzt hat es geklappt.
Der Eintrag in den vertrauenswürdigen Server war korrekt, wir ja bereits von Ralf und Bernhard bestätigt.
Serverneustart war jedoch notwendig.

Vielen Dank noch einmal an alle und einen schönen erfolgreichen Tag