Autor Thema: Automatischer aufgerufener Agent läuft nicht mehr auf dem Server  (Gelesen 4102 mal)

Offline Klafu

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.944
  • Geschlecht: Männlich
  • Remember the Cookies!
Hallo zusammen,

ich hab einen Agent in einer MailDatenbank, der aus allen E-Mails die Anhänge nimmt, auf einem anderen Server ablegt und die Mail in einen Ordner verschiebt.
Das macht er allerdings nicht mehr. Als Ziel des Agenten hab ich bisher "Run on new or modified Mails" genutzt und jetzt zum testen einmal "Scheduled".
Der Agent läuft laut Log, aber er macht nichts.

Der Agent funktionierte bereits.

Ich hab ihn jetzt mal ganz umgestellt, so das er stündlich den Maileingang "leert". Aber auch das macht er nicht. Er läuft, fasst aber keine Mail an.
Auch wenn ich ihn dann manuell aufrufe muss ich ihn wegen ca. 5 Mails im Posteingang 3 mal starten... Er bringt aber auch keine Fehler und läuft normal durch.
Woran kann das liegen? Mache ich mittlerweile im Script eine Fehler?

Code
Option Public
	Dim session As NotesSession
	Dim db As NotesDatabase
	Dim doc As NotesDocument
	Dim fpath As String
	Dim mail As NotesDocument
	Dim inbox As NotesView
	Dim i As Integer

Sub Initialize	
	Set session = New NotesSession
	Set db = session.CurrentDatabase
	fpath = "\\SERVER\Ordner$\"
	Set inbox = db.Getview("($inbox)")
	Set doc = inbox.Getfirstdocument()
	i = 0
	While Not doc Is Nothing	
		Set rtitem = doc.GetFirstItem( "Body" )
		If (rtitem.Type = RICHTEXT) Then
			ForAll o In rtitem.EmbeddedObjects		
					Call o.ExtractFile(fpath & o.Source)
					If Dir(fpath + o.Source) <> "" Then 
						Call doc.PutInFolder("Done")
						Call doc.RemoveFromFolder("($Inbox)")
					Else
						Call doc.PutInFolder("Error")
						Call doc.RemoveFromFolder("($Inbox)")
						i = i+1
					End If
			End ForAll
		End If
		Set doc= inbox.Getnextdocument(doc)
	Wend
	
	If i > 0 Then
		Set mail = New NotesDocument(db)
		Set rtBody= New NotesRichTextItem (mail, "Body")
		mail.Sendto = "Chris@MAILADRESSe.de"
		mail.Subject = "Fehler beim Export - Bitte prüfen"
		Call rtbody.AppendText( "Anbei ein Link zur MailDatenbank >> " )
		Call rtBody.AppendDocLink(db, db.Title)
		mail.Send False	
		i = 0
	End If		
End Sub


Chris
„Der einzige Mensch, der sich vernünftig benimmt, ist mein Schneider. Er nimmt jedesmal neu Maß, wenn er mich trifft, während alle anderen immer die alten Maßstäbe anlegen in der Meinung, sie paßten auch heute noch...“

Offline macchina

  • Junior Mitglied
  • **
  • Beiträge: 62
  • Ich liebe dieses Forum!
Hi,

wenn der Domino Server unter LocalSystemAccount (=Standard) läuft, dann hat er im Normalfall keinen Zugriff auf Shares, sondern nur auf "seine" lokalen Laufwerke... Nur so mal als Hinweis ;-)

Es gibt einige Workarounds (Mappen mit CMD's etc), ich hab allerdings meine Domino-Server mit einem Domain-Admin-User laufen.

LG Ernstl


Offline Klafu

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.944
  • Geschlecht: Männlich
  • Remember the Cookies!
Hallo Ernstl,

danke für deine Antwort. Die Serverdienste laufen als Lokales System und das "Ziel" der Anhänge ist ein verbundenes Netzlaufwerk.
Gibt es einen Haken, wenn man den Server unter einem Benutzer laufen lässt?

Chris
„Der einzige Mensch, der sich vernünftig benimmt, ist mein Schneider. Er nimmt jedesmal neu Maß, wenn er mich trifft, während alle anderen immer die alten Maßstäbe anlegen in der Meinung, sie paßten auch heute noch...“

Offline ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.697
  • Geschlecht: Männlich
Hallo,

Auch wenn er letztendlich als periodische Agent laufen soll, schon mal im Debugger durch den Code durchgegangen?
(vor allem, werden die Objekte auf die Notes-Dokumente auch immer richtig gesetzt)


Andreas

Offline umi

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.062
  • Geschlecht: Männlich
  • one notes to rule'em all, one notes to find'em....
    • Belsoft AG
Hallo Chris

Wie schon erwähnt. Als Local System Account hat er keinen Zugriff auf irgendwelche Netzlaufwerke. Egal ob diese gemappt sind oder nicht.
Entweder Du lässt den Server unter einem anderen Service Account laufen, der über die nötigen Rechte verfügt, oder du bastelst Dir irgendwelche lokalen vbs / cmd scripte die die Attachments nachträglich kopieren.

Gruss

Urs

<:~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Jegliche Schreibfehler sind unpeabischigt
http://www.belsoft.ch
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~:>

Offline Klafu

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.944
  • Geschlecht: Männlich
  • Remember the Cookies!
Hallo,

danke für eure Antworten! Ich werde dann mal den Server als Benutzer laufen lassen.

Was das manuelle Ausführen angeht...
Ich hab jetzt mal die While Schleife durch eine Do While ersetzt. Komischerweise ist aber doc = inbox.getnextdoc irgendwann leer obwohl im Eingang noch E-Mails stehen.
Habt ihr eine Idee, woran das liegen kann?


P.S. es scheint so, als ob er beim manuellen durchführen jeweils 50% der Mails im Eingang abarbeitet  ???
Chris
« Letzte Änderung: 08.03.12 - 10:04:41 von Klafu »
„Der einzige Mensch, der sich vernünftig benimmt, ist mein Schneider. Er nimmt jedesmal neu Maß, wenn er mich trifft, während alle anderen immer die alten Maßstäbe anlegen in der Meinung, sie paßten auch heute noch...“

Offline TRO

  • Senior Mitglied
  • ****
  • Beiträge: 296
Mit dem

   Call doc.RemoveFromFolder("($Inbox)")

entziehst du dem

   Set doc= inbox.Getnextdocument(doc)

seine Grundlage. Es wird dadurch immer ein doc übersprungen


So wäre es korrekt

   While Not doc Is Nothing   

      Set NEXTdoc= inbox.Getnextdocument(doc)

      Set rtitem = doc.GetFirstItem( "Body" )
      If (rtitem.Type = RICHTEXT) Then
         ForAll o In rtitem.EmbeddedObjects      
               Call o.ExtractFile(fpath & o.Source)
               If Dir(fpath + o.Source) <> "" Then
                  Call doc.PutInFolder("Done")
                  Call doc.RemoveFromFolder("($Inbox)")
               Else
                  Call doc.PutInFolder("Error")
                  Call doc.RemoveFromFolder("($Inbox)")
                  i = i+1
               End If
         End ForAll
      End If

      Set doc= NEXTdoc

   Wend

Offline Klafu

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.944
  • Geschlecht: Männlich
  • Remember the Cookies!
Danke TRO!  :)

Der Ansatz scheint gut zu sein.
Es waren eben noch 3 Mails im Posteingang. Die ersten beiden wurden gemacht. Es wurde also nicht jede zweite ausgelassen. Nur war im 2. Durchgang das Nextdoc leer und somit ist die 3. Mail nicht mehr verarbeitet worden  :-\

Chris
„Der einzige Mensch, der sich vernünftig benimmt, ist mein Schneider. Er nimmt jedesmal neu Maß, wenn er mich trifft, während alle anderen immer die alten Maßstäbe anlegen in der Meinung, sie paßten auch heute noch...“

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.883
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Es ist VIEL einfacher: Einfach inbox.AutoUpdate = False setzen....
Ansonsten aktualisiert jede Änderung (putInFolder / removefromfolder) die Inbox und es werden nicht alle Dokumente erfasst.

Mit dem Flag gesetzt wird das LotusScript- Objekt "Inbox" auf dem Stand eingefroren den es zum Zeitpunkt des erstellens hat. Damit beeinflussen die putinfolder, removefromfolder, etc. das ganze nicht mehr. Eine Alternative wäre es, zu sagen:

While not doc is nothing

set doc = inbox.GetFirstDocument
Wend

weil sich das Inbox- Objekt sowieso nach jedem removefromfolder refresht, ist immer ein anderes Dokument das nächste neue...
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Offline Klafu

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.944
  • Geschlecht: Männlich
  • Remember the Cookies!
Eine Alternative wäre es, zu sagen:

While not doc is nothing

set doc = inbox.GetFirstDocument
Wend

weil sich das Inbox- Objekt sowieso nach jedem removefromfolder refresht, ist immer ein anderes Dokument das nächste neue...

Danke Torsten. So Funktioniert es nun einwandfrei! Besten Dank auch an die Anderen !

Chris
„Der einzige Mensch, der sich vernünftig benimmt, ist mein Schneider. Er nimmt jedesmal neu Maß, wenn er mich trifft, während alle anderen immer die alten Maßstäbe anlegen in der Meinung, sie paßten auch heute noch...“

Offline Klafu

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.944
  • Geschlecht: Männlich
  • Remember the Cookies!
Hallo Chris

Wie schon erwähnt. Als Local System Account hat er keinen Zugriff auf irgendwelche Netzlaufwerke. Egal ob diese gemappt sind oder nicht.
Entweder Du lässt den Server unter einem anderen Service Account laufen, der über die nötigen Rechte verfügt, oder du bastelst Dir irgendwelche lokalen vbs / cmd scripte die die Attachments nachträglich kopieren.



Hallo zusammen,

kann es sein, dass der Autostart des Servers nicht funktioniert, wenn man den Serverdienst unter einem anderen Domänenaccount automatisch starten lassen möchte?
Bei uns ist das nämlich gerade so  ::)


Gruß Chris
„Der einzige Mensch, der sich vernünftig benimmt, ist mein Schneider. Er nimmt jedesmal neu Maß, wenn er mich trifft, während alle anderen immer die alten Maßstäbe anlegen in der Meinung, sie paßten auch heute noch...“

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.883
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Doch, das funktioniert schon... nur hast Du dann keine Konsole, weil nur der Local System Acoount die Berechtigung hat, Daten mit dem Desktop auszutauschen. Damit Du wieder eine Konsole bekommst, musst Du Deinen Dienst- Aufruf in der Registry um -jc -c erweitern und dann die jsonsole.exe aus dem Domino- Verzeichnis starten.
-jc -c starten den Server- Controller mit, der dann mit dem Userprogramm jConsole angesprochen wird. Dank verstärkter Sicherheit in Server 2008 geht es dort sowieso nur noch so, die Console auf dem Server anzuzeigen... (wenn der Server als Dienst gestartet wird)
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Offline Klafu

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.944
  • Geschlecht: Männlich
  • Remember the Cookies!
Du meinst, ich muss die nservice.exe auch noch mit -jc -c aufrufen?
Das steht gerade drin
Code
"E:\SERVER\nservice.exe" "=E:\SERVER\notes.ini" "-jc" "-c"
„Der einzige Mensch, der sich vernünftig benimmt, ist mein Schneider. Er nimmt jedesmal neu Maß, wenn er mich trifft, während alle anderen immer die alten Maßstäbe anlegen in der Meinung, sie paßten auch heute noch...“

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.883
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
das ist ok so... Dann musst Du, um eine Konsole zu bekommen, nur noch die jconsole.exe aus dem Domino- Verzeichnis starten... Wenn die sich nicht connected, dann gibt es eine Config- Datei (ich meine dconsole.ini), die man anpassen muss...
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Offline Klafu

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.944
  • Geschlecht: Männlich
  • Remember the Cookies!
Okay. Es passt alles.
Der Server startet mittlerweile automatisch neu. Vermutlich hatte ich es einfach nicht oft genug probiert. :D

Danke Torsten!
„Der einzige Mensch, der sich vernünftig benimmt, ist mein Schneider. Er nimmt jedesmal neu Maß, wenn er mich trifft, während alle anderen immer die alten Maßstäbe anlegen in der Meinung, sie paßten auch heute noch...“

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz