Domino 9 und frühere Versionen > Entwicklung
Agent darf Datei nicht speichern
dasRalph:
Hallo!!!
Ich habe einen Lotus Script Agenten programmiert der Dateianhänge auf einem Win-Fileserver ablegen soll und diese dann im Dokument löschen soll.
Hierzu nutze ich einmal "Mkdir" um das Zielverzeichnis anzulegen für den Fall, dass es nicht da ist und um die Datei zu speichern nutze ich "ExtractFile".
Die Datenbank ist mit der ID des Servers signiert und die Server-ID ist im Server-Dokument unter Sicherheit bei "Unbeschränkte LotusScript/Java-Agenten ausführen:" mit eingetragen.
Auf dem Ziel-Laufwerk hat "Jeder" Vollzugriff.
Das Aufrufen des Agenten, er soll auf dem Server ablaufen, läuft problemlos. Hier gibt es keine Fehlermeldung.
Wenn nun der Agent die Dateien auf besagtem Fileserver ablegen soll, dann bekomme ich folgende Fehlermeldung "Path/File access error", steht so im Log.
Sitze ich am Domino Server und will per Hand (Explorer) eine Datei im Ziel-Laufwerk speichern, so funktioniert dies.
Stell ich den Agenten um, dass er die Dateien bei sich lokal (z.B. Laufwerk C:\) ablegen soll, dann funktioniert es.
Nun bin ich der Meinung, dass dies kein Lotus Notes Problem ist, doch mir fällt nichts mehr ein :(
Bin für jede Idee dankbar
Ralph
koehlerbv:
Das scheint mir aber kein Problem zu sein mit Zugriffsrechten auf das Laufwerk oder Verzeichnis, sondern der Agent scheint schlicht das Laufwerk oder das Verzeichnis nicht zu kennen.
Probier doch mal ChDir, ChDrive und Dir, an welcher Stelle da eine Fehlermeldung kommt- und das mit einem serverbasierenden Agent (wer den unterzeichnet hat, sollte wurscht sein, denn der User ist ja der Server, nicht der Agent-Unterzeichner).
Was sagt der Agent, wenn Du als Zielverzeichnis ein wirklich bestehendes auf dem Server angibst? (Darf vielleicht nicht jeder ein Directory erzeugen auf dem Server - ist das ggf. der casus knacktus ?)
HTH,
Bernhard
dasRalph:
folgender Code soll's machen
--- Code: --- 'Anlagen speichern - ANFANG
path = profildoc.OrdnerAnlagen(0)
KatAntragID = cdoc.KatAntragID(0)
Dim rtitem As Variant
Set rtitem = cdoc.GetFirstItem( "DokAnlage" )
If ( rtitem.Type = RICHTEXT ) Then
If cdoc.HasEmbedded Then
'Verzeichnis erstellen für DStK
path2 = Dir$(path & "\", 16)
status = 0
Do While path2 <> ""
path2 = Dir$()
If ( path2 = Trim$(Strleft(KatAntragID, "/"))) Then
status = 1
End If
Loop
path = path & "\" & Trim$(Strleft(KatAntragID, "/"))
If ( status = 0 ) Then
Mkdir path
Elseif (status = 1) Then
status = 0
End If
'Verzeichnis erstellen für DStK - ENDE
'Verzeichnis erstellen für Datum
path2 = Dir$(path & "\", 16)
status = 0
Do While path2 <> ""
path2 = Dir$()
If ( path2 = Trim$(Strleft(Strright(KatAntragID, "/"), "/"))) Then
status = 1
End If
Loop
path = path & "\" & Trim$(Strleft(Strright(KatAntragID, "/"), "/"))
If ( status = 0 ) Then
Mkdir path
Elseif (status = 1) Then
status = 0
End If
'Verzeichnis erstellen für Datum - ENDE
'Verzeichnis erstellen für lfdNr
path2 = Dir$(path & "\", 16)
status = 0
Do While path2 <> ""
path2 = Dir$()
If ( path2 = Trim$(Strrightback(KatAntragID, "/"))) Then
status = 1
End If
Loop
path = path & "\" & Trim$(Strrightback(KatAntragID, "/"))
If ( status = 0 ) Then
Mkdir path
Elseif (status = 1) Then
status = 0
End If
'Verzeichnis erstellen für lfdNr - ENDE
'Wechseln der Tabelle in der Access-DB
qry.SQL = "SELECT * FROM tbl_Kat_Dok"
If qry.GetError <> DBstsSUCCESS Then
Exit Sub
End If
result.Execute
Forall o In rtitem.EmbeddedObjects
If ( o.Type = EMBED_ATTACHMENT ) Then
text$ = o.source
Call o.ExtractFile ( path & "\" & o.source )
Call o.Remove ''aktivieren wenn Anlagen im Dokument gelöscht werden sollen
result.AddRow
Call result.SetValue("RegNr", Cstr(cdoc.KatAntragID(0)))
Call result.SetValue("AnhangDatei", Cstr(Strleftback(text$, ".")))
Call result.SetValue("AnhangDateiTyp", Cstr(Strrightback(text$, ".")))
text$ = path
Call result.SetValue("AnhangPfad", text$)
Call result.UpdateRow
End If
End Forall
result.Close(DB_CLOSE)
con.Disconnect
End If
End If
'Anlagen speichern - ENDE
--- Ende Code ---
"path" ist ein Feld im Profildokument wo ich einstellen kann, wo die Dateien gespeichert werden sollen
"KatAntragID" ist eine Registriernummer im Format xx/xx/xxxx -> zwei Buchstaben / Jahr / lfd. Nr.
Das Verzeichnis welches in "path" angegeben ist, das existiert, die restlichen werden erstellt.
Stelle ich nun in "path" 'c:\temp' ein, dann funktioniert es, stelle ich aber '\\server\ablage\dokumentation' ein, dann gehts nicht. Verbinde ich die Freigabe, so das auf dem Domino Server zum Beispiel 'H:\dokumentation" herrauskommt, dann gehts auch nicht.
Ich kann mir nicht vorstellen, dass es am Agenten liegen soll oder am Domino Server da er es ja lokal speichern kann, nur am File Server sind die Berechtigungen für das Zielverzeichnis auf "Vollzugriff" gestellt, sollte also auch dann gehn :(
Wenn das Verzeichnis nicht da ist oder nicht gefunden wird, sollte die Fehlermeldung nicht eine andere sein???
Ja zum Teil hast Du recht, für das Speichern der Anlagen ist der Unterzeichner egal, nur muss dieser auf dem Server das Recht besitzen agenten auszuführen, die Dateioperationen ausführen, da der Server dies in der Regel darf, wurde die Datenbank mit der Server ID signiert.
koehlerbv:
Hier muß ich jetzt die Hände heben: Ich bin in der glücklichen Situation, daß ich mich voll auf's Entwickeln konzentrieren kann und mich bei Administration (Notes und OS) auf hervorragende Kollegen verlassen kann - vor allem auf Torsten M., der sollte endlich auch dem Forum beitreten ;-)
Ciao,
Bernhard mit Admin-Defiziten ;-(
dasRalph:
Ich bin mir noch nicht ganz sicher aber ich glaube über Nacht hatte ich eine gute Idee
Der Domino Server ist bei mir auf Arbeit so eingestellt, dass er automatisch beim Systemstart mit startet. Er läuft hier auf einem NT Server. Wenn er nun läuft, dann arbeitet er sicherlich als lokaler Administrator?!?
Wie komm ich darauf??? Ich hatte ja geschrieben, dass das speichern auf einem lokalem Laufwerk geht. Ich hatte mir die Datei angeschaut und festgestellt, dass diese dem Administrator gehört, obwohl dieser selbst nicht am System angemeldet war.
Wenn es nun tatsächlich so ist das er als lokaler Administrator läuft, dann gehört diese "Person" ja auch nicht zur Domäne und darf ja eigentlich auch nicht auf Domänenlaufwerke zugreifen... wenn ich mich da richtig erinnere.
Nun habe ich hier bei mir gerade geschaut und gesehn, dass man dem Dienst auch ein Benutzerkonto zuweisen kann, jedoch habe ich win2k, ob dies bei NT auch geht werd ich gleich auf Arbeit sehn.
Aber es könnte die Lösung sein *hoffnunghab*
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln