Agent - "Unable to open file"

  • Habe Domino 6.5 auf Linux SLES 8 laufen. Beim Versuch
    ein Textfile im Script zu erstellen, kommt immer die Meldung:
    "Unable to open file".


    fileNum% = Freefile()
    sfilename$ = "/home/in/save/test.txt"
    Open sfilename$ For Output Access Read Write As fileNum%
    Print #fileNum%, "Test"
    Close fileNum%


    Rechte sehen gut aus. Gruppe notes -rwxrwxrwx
    Danke für jede Hilfe.


    Gruß bo

    • Offizieller Beitrag

    wer führt das Script aus (Server oder Client)?
    Wird es vom Server ausgeführt, unter welchem Account läuft der Domino?


    Gruß
    Dirk

    Rein logisches Denken verschafft uns keine Erkenntnis über die wirkliche Welt.
    Alle Erkenntnis der Wirklichkeit beginnt mit der Erfahrung und endet mit ihr.
    Alle Aussagen, zu denen man auf rein logischen Wegen kommt, sind, was die Realität angeht, vollkommen leer.
    Albert Einstein

  • OK. Wie wirst den das machen ? Wenn ich Zeitgesteurt starte,
    passiert nichts.
    Stellen wir die Frage anders, wie kann ich im LS auf ein File
    auf dem Linux Server zugreifen ? Habt schon über Button
    in Maske probiert, Ergebnis gleich.

  • Wenn dein Agent zeitgesteuert läuft steht der Fehler wenn dann in der log.nsf des Servers, sicher nicht in deiner lokalen.
    Dann ist als nächstes die Frage: Hast du überhaupt das Recht dazu Agenten auf dem Server laufen zu lassen ?

  • Auf dem Server stand in der log.nsf auch nichts. Der Agent
    war im Administrator sichtbar.
    Möchte aber zuerst gern mit Hilfe vom Button nur ein File erstellen können und erst später mit dem Agenten wiederversuchen.

  • Habe das befürchtet. Mit den Freigaben auf meinem Samba Server
    funktioniert alles einwandfrei. Werde aber Samba auf dem
    Domino Server nicht starten.
    Lokales Mapping kommt nicht in Frage, es muss am Ende über einen Agenten auf dem Server laufen.
    Vielen Dank für Eure Hilfe.


    Gruß bo

  • Tipp: Probier mal nach /tmp zu schreiben. Wenn das klappt, dann stimmen die Berechtigungen in Deinem Pfad nicht. Wenn das auch nicht geht, werden die Agent-Sicherheitseinstellungen nicht stimmen.

  • Hallo bo,


    wie taurec schob schrieb, solltest du unbedingt unterscheiden, wo der LotusScript-Code ausgeführt wird.


    Wenn du in einer Maske einen Button hast, der einen Agenten "normal" aufruft, läuft der Agent bei dir im Notes-Client. Wenn du den Agent im Aktionen-Menü aufrufst, läuft der Agent wieder bei dir im Notes-Client.


    Wenn der Agent zeitgesteuert auf dem Server aufgerufen wird, läuft er dort (wenn er überhaupt läuft).


    Um festzustellen, ob er überhaupt läuft, macht es vielleicht Sinn, den Agent-Manager (amgr) protokollieren lässt, was er tut.


    Dazu schreibe
    LOG_AGENTMANAGER=1
    in ein Konfigurationsdokument oder die notes.ini des Servers. Anschließend den Agent-Manager durchstarten:
    RESTART TASK AMGR


    Mit
    TELL AMGR SCHEDULE
    sagt dir, wann er welche Agenten starten wird.



    Mit ein paar eingestreuten PRINT oder MESSAGEBOX-Befehlen kannst du sehen, ob der Agent aufgerufen wird und bis wohin er ausgeführt wird.



    Du kannst auch den Remote-Debugger nutzen, um einen Server-Agenten zu debuggen.



    Ausführungsrechte: Wenn du den Agenten im Designer öffnest und dir dort die Agenten-Eigenschaften ansiehst, dort den zweiten Reiter, dann gibt es dort eine Einstellung "Laufzeit-Sicherheit", die mindestens auf 2 stehen sollte, da Zugriffe auf das Dateisystem erhöhte Rechte benötigen.



    Ausführungsrechte, die Zweite: Im Server-Dokument auf dem zweiten Reiter (Sicherheit) gibt es je ein Feld, in dem die Ausführung von eingeschränkten/uneingeschränkten LotusScript-Agenten bestimmten Personen und Gruppen erlaubt wird. Da sollest du direkt oder indirekt drin stehen.



    HTH
    Thomas

    • Offizieller Beitrag

    bei zeitgesteuerten Agenten dürfen keine UI-Elemente verwendet werden, betrifft auch Bibs mit UI-Elementen, auch wenn Du die UI-Elemente aus der Bib in dem Script nicht verwendest!


    Schau mal in die Eigenschaften des Agenten, Da kannst Du noch eine Ausführungssicherheit einstellen, Stell dies mal auf mehr Rechte, denn Du willst außerhalb von Notes Dateien verändern (im BS).


    Und Dein User oder der Unterzeichner des AGenten muss die entsprechenden Ausführungsrechte auf dem Server besitzen (.. frag zur Not den Admin oder schau im Server-Dokument nach)


    Gruß
    Dirk

    Rein logisches Denken verschafft uns keine Erkenntnis über die wirkliche Welt.
    Alle Erkenntnis der Wirklichkeit beginnt mit der Erfahrung und endet mit ihr.
    Alle Aussagen, zu denen man auf rein logischen Wegen kommt, sind, was die Realität angeht, vollkommen leer.
    Albert Einstein

  • Zu der ANmerkung von Diali, daß man in Bibs bei zeitgesteuerten Agenten keine UI-Befehle nutzen darf, eine Anmerkung zur ANmerkung.


    Das stimmt, wenn man die Elemente als UI-Elemente deklariert. Werden sie als Variant deklariert, kann man sie einbauen, muß aber über ein ErrorHandling verhindern, daß sie als UI-Elemente angesprochen/verwendet werden.


    Z.B. habe ich eine kleine Routine laufen, die mir sagt, ob es ein UI gibt. Ich versuche, einen als Variant deklarierten Workspace als UIWorkspace anzusprechen - und fange die Fehlermeldung im Background-Fall ab. Damit weiß ich dann, daß ich kein UI habe.

  • Ich verwende den gleichen Code sowohl in Agenten, die im Userkontext laufen als auch in Hinterggrund- oder zeitgesteuerten Agenten.


    Mit dem Versuch, einen Workspace zu öffnen, erhalte ich einen Fehler im (NichtUI)Agenten - und lasse bestimmte Ausgaben (Print, Abfragen, Messageboxes, Fortschrittsbalken) weg. Darum geht es.


    Wie willst du sonst (im identischen Code) herausfinden, ob es ein User-Interface gibt ?


    Wenn ich heute noch einmal anfangen müßte, all das zu programmieren, würde ich mir Klassen schreiben, die je nach Aufruf diese Variable per se setzen - und dann im Agentencode darauf reagieren.


    Aber es war ja auch nur eine Anmerkung zur Anmerkung.


    Gruß


    Norbert