Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: Cerebellum am 09.12.04 - 16:55:15

Titel: Agent darf manuell Attachments speichern - automatisch nicht ??
Beitrag von: Cerebellum am 09.12.04 - 16:55:15
Hallo,

ich habe einen Agenten geschrieben, der von Mails die Attachments lösen und auf Platte speichern soll.

Wenn ich ihn manuell (über "Aktionen") ausführe funktioniert es einwandfrei - lass ich ihn aber per Zeitplan auf dem Server ausführen passiert nichts bzw. es erscheint in der Log-Datei die Fehlermeldung "Path not found".

Der Agent hat selbst die Laufzeit-Sicherheitsstufe 3, wird in meinem Namen ausgeführt (habe Manager-Berechtigungen auf die Datenbank), im Server-Dokument stehen der Server selber sowie alle Nutzer bei "Run unrestricted methods..." über eine Gruppe drin...

Woran kann es liegen?

Hier der Quellcode:

Code
Sub Initialize
	
	Dim CurrentSession As New notessession
	Dim db As notesdatabase
	Dim docsel As NotesDocumentCollection
	Dim doc As NotesDocument
	Dim rtitem As Variant
	Dim Attpath As String
	Dim Attpath_Master As String
	Dim Attpath_date As String
	Dim Attsubject As Variant
	Dim BerichtsName As String
	Dim Verzeichnisse As String
	Dim VzCreate_date As Boolean
	Dim VzCreate_bericht As Boolean
	
	Set db = CurrentSession.CurrentDatabase
	Set docsel = db.UnprocessedDocuments
	
	Attpath = "\\z-dom-01\s$\Z_Daten\"  'Wichtig immer mit \ abschließen
	Attpath_date = Date 'aktuelles Systemdatum um Unterordner zu erstellen; evt. mit Format-Function anders formatieren
	Attpath_master = Attpath & Attpath_date & "\"  'setzt Pfad mit Unterordner (Datum) zusammen
	
	'Überprüfung ob Ordner (Datum) vorhanden ist
	VzCreate_date = True
	Verzeichnisse$ = 	Dir$(Attpath,16)
	Do While Verzeichnisse$ <> ""
		Verzeichnisse$ = Dir$()
		If Instr( Verzeichnisse$, Attpath_date ) = 1 Then
			VzCreate_date = False
			Exit Do
		End If
	Loop	
	
	'wenn nicht vorhanden oberste Ebene des Ordners (Datum) erstellen
	If VzCreate_date Then
		'Msgbox "Ordner (Datum) erstellt"
		Mkdir Attpath_master 'oberste Ebene des Ordners (Datum)
	Else
		'Msgbox "Ordner (Datum) nicht erstellt"
	End If
	
	Set doc = docsel.Getfirstdocument
	While Not doc Is Nothing
		Set rtitem = doc.GetFirstItem( "Body" )
		
		Set Attsubject = doc.GetFirstItem( "Subject" )
		Forall v In Attsubject.Values
			BerichtsName = Trim$(Strright(v, "|" ))
			Attpath = Attpath_master & BerichtsName & "\"
			
			'Überprüfung ob Unterordner (Bericht) vorhanden ist
			VzCreate_bericht = True
			Verzeichnisse$ = Dir$(Attpath_master,16)
			Do While Verzeichnisse$ <> ""
				Verzeichnisse$ = Dir$()
				If Instr( Verzeichnisse$, BerichtsName ) = 1 Then
					VzCreate_bericht = False
					Exit Do
				End If
			Loop
			
			'wenn nicht vorhanden untere Ebende des Ordners (Bericht) erstellen
			If VzCreate_bericht Then
				'Msgbox "Unterordner erstellt"
				Mkdir Attpath 'Unterordner (Datum)
			Else
				'Msgbox "Unterordner nicht erstellt"
			End If
			
			'Attachment lösen
			If ( rtitem.Type = RICHTEXT ) Then
				Forall o In rtitem.EmbeddedObjects
					If ( o.Type = EMBED_ATTACHMENT ) Then
						Call o.ExtractFile( Attpath & o.Source )
					'Call o.Remove 'Attachment löschen
					'Call doc.Save( False, True ) 'Dokument speichern
					End If
				End Forall
			End If
			
			Attpath = Attpath_Master 'Variable zurücksetzen auf den Oberordner (Datum) 
			Set doc = docsel.Getnextdocument(doc)
			
		End Forall	
		
	Wend
	
End Sub



Vielen Dank im Voraus und freundliche Grüße,
Chris
Titel: Re: Agent darf manuell Attachments speichern - automatisch nicht ??
Beitrag von: koehlerbv am 09.12.04 - 16:59:46
Darf denn der Domino-Server auf "\\z-dom-01\s$\Z_Daten\" überhaupt zugreifen ?

Bernhard
Titel: Re: Agent darf manuell Attachments speichern - automatisch nicht ??
Beitrag von: m3 am 09.12.04 - 17:00:07
AFAIK laueft der Domino-Server unter Windows in  eingeschraenkten Benutzerkontext, der auf keine Netzlaufwerke zugrefen darf. Zumindest haette ich das so konfiguriert.

Daher darf auch Dein Agent auf kein Netzlaufwerk (Attpath = "\\z-dom-01\s$\Z_Daten\") zugreifen.
Titel: Re: Agent darf manuell Attachments speichern - automatisch nicht ??
Beitrag von: Semeaphoros am 09.12.04 - 17:05:34
Und wenn der Server das dürfte, müsste er sich ja auch noch gegenüber dem remote-server oder der Domäne/AD entsprechend authentifizieren können.
Titel: Re: Agent darf manuell Attachments speichern - automatisch nicht ??
Beitrag von: Cerebellum am 09.12.04 - 17:18:34
z-dom-01 ist er selber...

also soll ich einen laufwerksbuchstaben verwenden? Oder was wäre die Lösnug?
Titel: Re: Agent darf manuell Attachments speichern - automatisch nicht ??
Beitrag von: Semeaphoros am 09.12.04 - 17:20:01
Ah, dann versuch das mal mit nem Laufwerksbuchstaben, schon möglich, dass er auf sich selber via UNC mit anderer Berechtigung kommt als per lokalem Zugriff
Titel: Re: Agent darf manuell Attachments speichern - automatisch nicht ??
Beitrag von: koehlerbv am 09.12.04 - 17:20:41
z-dom-01 ist die Kiste, auf der der Domino-Server läuft. Das heisst noch lange nicht, dass er darauf schalten und walten darf, wie er will ...

Bernhard
Titel: Re: Agent darf manuell Attachments speichern - automatisch nicht ??
Beitrag von: Cerebellum am 10.12.04 - 11:22:49
so, ich habe jetzt direkt den laufwerksbuchstaben als pfad eingegeben und testweise auf das domino-verzeichnis gelenkt - darauf hat der server auf jeden fall zugriff.

Trotzdem kommt noch die Meldung "Path not found"!?

Titel: Re: Agent darf manuell Attachments speichern - automatisch nicht ??
Beitrag von: umi am 13.12.04 - 08:09:54
Versuch doch mal einen Error handler einzubauen, damit Du die genaue Zeile herausbekommst, wo der Fehler passiert. (z.B. mit OpenLog von Openntf.org)

gruss umi
Titel: Re: Agent darf manuell Attachments speichern - automatisch nicht ??
Beitrag von: macchina am 15.12.04 - 09:32:35
Hi!

Defaultmäßig läuft der Domino-Service mit dem Local SystemAccount. Dieser Account hat definitiv keine Rechte auf Netzwerklaufwerke (egal ob UNC oder per Laufwerksbuchstaben).
Leider kann man dem LocalSystemAccount keine zusätzlichen Rechte vergeben (zumind. hab ich nach langem googlen dazu nix gefunden).

Einzige Möglichkeit ist einen speziellen User für den Domino-Service im ActiveDirectory anzulegen und diesem die entsprechende Berechtigung zu geben.
Im Domino-Service muß dann bei "run as" dieser User angegeben werden.
Nachteil dieser Variante ist, daß die Domino-Server-Konsole nicht mehr sichtbar ist.

LG Ernstl
Titel: Re: Agent darf manuell Attachments speichern - automatisch nicht ??
Beitrag von: Cerebellum am 20.12.04 - 11:25:51
im AD ist der User "DominoService" eingerichtet, mit diesem Account wird der Domino Server auch gestartet und auf dem Verzeichnis der Festplatte hat dieser User Vollzugriff.

trotzdem funzt es nicht...!?  :'(


 
Titel: Re: Agent darf manuell Attachments speichern - automatisch nicht ??
Beitrag von: Cerebellum am 20.12.04 - 13:53:51
so, das Problem hat woanders gelegen:

auf meinem Rechner ist die deutsche Umgebung aktiviert, so liefert die Funktion "date" das Datum z. B. als "20.12.2004" zurück und erstellt diesen Ordner.

Auf dem Server ist die englische Umgebung und gibt so "20/12/2004" zurück - damit scheint er nicht zurecht zu kommen...

 ::)
Titel: Re: Agent darf manuell Attachments speichern - automatisch nicht ??
Beitrag von: Semeaphoros am 20.12.04 - 13:57:02
Naja, gute alte Weisheit, man sollte Datümmer wenn immer möglich nicht als Strings verwenden, sonst werden sie ab und an mal zu dadümmern, und das ist dann wirklich dümmer ......