Autor Thema: OoO-Agenten Laufzeiten anzeigen lassen???  (Gelesen 7225 mal)

Offline Norton

  • Senior Mitglied
  • ****
  • Beiträge: 409
  • Geschlecht: Männlich
  • Informationen schaden nur dem, der keine hat!
OoO-Agenten Laufzeiten anzeigen lassen???
« am: 31.03.11 - 14:48:57 »
Liebe @Notes'ler,

wir stellen aktuell die 6er Mailschablone auf die 8er Mailschablone um. Im Prinzip ist das Thema auch rund, wenn die Sache mit den OoO-Agenten nicht wäre.

Situation ist folgende: Wir lesen am Umstellungsdatum mit dem Befehl "tell amgr sched" die aktiven Agenten aus, exportieren die Ausgabe in Excel und holen uns die relevanten Informationen raus um die Abwesenheitsbenachrichtigung (nun als Service) nach erfolgtem Convert neu starten zu können. Um das ganze zu entschlanken, würden wir uns eine Übersicht wünschen, die uns vorher anzeigt, für welchen Zeitraum die Agenten aktiviert sind. Für Notes 5 hatten wir so ein Tool. Leider können wir die Quelle hierfür nicht mehr ausfindig machen und mit 6er Datenbanken funktioniert das nicht mehr.

Hat jemand eine Idee oder kennt ein entsprechendes Tool???

Client und Server Version ist Notes / Domino 8.0.2

Danke und Gruß
Thomas
« Letzte Änderung: 04.04.11 - 10:51:07 von Norton »
ca. 1700 User
11 Domino 9.0.X Server

Offline m3

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.102
  • Geschlecht: Männlich
  • Non ex transverso sed deorsum!
    • leyrers online pamphlet
Re: OoO-Agenten Laufzeiten anzeigen lassen???
« Antwort #1 am: 31.03.11 - 14:52:44 »
Hi!

Du brauchst ja nur einen Agenten, der aus allen Mailfiles die Daten aus dem "OutOfOfficeProfile" Dokument ausliest.
HTH
m³ aka. Martin -- leyrers online pamphlet | LEYON - All things Lotus (IBM Collaborations Solutions)

All programs evolve until they can send email.
Except Microsoft Exchange.
    - Memorable Quotes from Alt.Sysadmin.Recovery

"Lotus Notes ist wie ein Badezimmer, geht ohne Kacheln, aber nicht so gut." -- Peter Klett

"If there isn't at least a handful of solutions for any given problem, it isn't IBM"™ - @notessensai

Offline ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.697
  • Geschlecht: Männlich
Re: OoO-Agenten Laufzeiten anzeigen lassen???
« Antwort #2 am: 31.03.11 - 14:54:03 »
Hallo,

Ihr braucht doch eigentlichblos das entsprechende Profile aus den Mailfiles der Benuter auslesen.

Wenn Ihr diesen kleinen Agenten auch noch manuell startet, kann er die Ausgabe auch gleich noch in eine csv-Datei machen und ihr habt alles was ihr braucht.


Andreas

Offline Norton

  • Senior Mitglied
  • ****
  • Beiträge: 409
  • Geschlecht: Männlich
  • Informationen schaden nur dem, der keine hat!
Re: OoO-Agenten Laufzeiten anzeigen lassen???
« Antwort #3 am: 01.04.11 - 09:27:09 »
Hallo zusammen,

danke für die Antworten. Mein Problem ist an dieser Stelle, dass unser Entwickler leider derzeit krank ist und das Thema zeitnah abgeschlossen werden muss. Wir haben hier noch ein Script soweit "zusammengebastelt", aber irgendwie passiert bei den ersten Tests nicht viel, außer, dass behauptet wird, dass alles gut gelaufen ist. Ich poste es einfach mal, auch wenn ich dann wohl im Entwickler-Forum besser wäre:

Sub Click(Source As Button)
   Dim session As New NotesSession
   Dim db As NotesDatabase
   Set db = session.CurrentDatabase
   Dim dbdir As New NotesDbDirectory("ServerName")
   
'Ueberpruefen der Datenbanken
   Print"Ueberpruefen der Out of Office"
   Set db = dbdir.GetFirstDatabase(DATABASE)
   While Not(db Is Nothing)
      If counter = 100 Goto ende
      If Left(db.FilePath,4) = "Verzeichnis" Then   
         Set ProfileDoc=db.GetProfileDocument("OutOfOfficeProfile")
         
'Schreiben des Report
         Print ProfilDoc.GetItemValue("FirstDayOut")(0)
         Print ProfilDoc.GetItemValue("FirstDayBack")(0)
         Print ProfilDoc.GetItemValue("$TableCurrentStatus")(0)
         Print ProfilDoc.GetItemValue("BookBusyTime")(0)
         Print ProfilDoc.GetItemValue("CurrentStatus")(0)
         Print db.Title
         counter = counter + 1
         
      End If
      Set db = dbdir.GetNextDatabase
   Wend
   
ende:
'Schlussmeldung
   Print "Ueberpruefung beendet"
   endmessage% = Messagebox("Serverueberpruefung abgeschlossen. "+Cstr(counter)+" Datenbanken aufgezeichnet.",0+64+0+0,"Template Reporter -Ueberpruefung beendet")
End Sub


So wie ich das sehe, müsste ich doch ein Output im Statusbereich bekommen, in dem die Daten hinterlegt sind. Aber hier sehe ich nichts, was mich weiterbringt.

Jemand eine Idee, wie man das besser machen könnte? Alternativ wäre ein Wunderheiler für unseren Entwickler eine gute Sache  ;)

Danke und Gruß
Thomas
ca. 1700 User
11 Domino 9.0.X Server

Driri

  • Gast
Re: OoO-Agenten Laufzeiten anzeigen lassen???
« Antwort #4 am: 01.04.11 - 09:31:25 »
Was mir direkt aufgefallen ist :

- ProfileDoc ist nicht deklariert.
- Bei den Print-Anweisungen heißt das Objekt dann "ProfilDoc".


Darüber hinaus würde ich mir überlegen, das in eine Textdatei auszugeben. Die Ausgabe ins Log ist doch leicht unübersichtlich.

Ich habs mal schnell zusammengeschrieben, ist allerdings ungetestet und sollte auch noch angepaßt werden (Pfad für Datei, etc.)

Code
Dim session As New NotesSession
	Dim db As NotesDatabase
	Dim dbdir As New NotesDbDirectory("ServerName")
	Dim ProfileDoc As NotesDocument
	Dim counter As Integer, fileNum As Integer
	Dim file As String, outStr As String
	
	file = "C:\export.csv"
	fileNum = Freefile() 
	Open file For Output As fileNum
	
'Ueberpruefen der Datenbanken
	Print"Ueberpruefen der Out of Office"
	Set db = dbdir.GetFirstDatabase(DATABASE)
	While Not(db Is Nothing)
		If counter = 100 Goto ende
		If Left(db.FilePath,4) = "Verzeichnis" Then   
			Set ProfileDoc=db.GetProfileDocument("OutOfOfficeProfile")
			
			If Not (ProfileDoc Is Nothing) Then
'Schreiben des Report
				outStr = Cstr(ProfileDoc.GetItemValue("FirstDayOut")(0)) & "," & Cstr(ProfileDoc.GetItemValue("FirstDayBack")(0)) &_
				"," & Cstr(ProfileDoc.GetItemValue("$TableCurrentStatus")(0)) & "," & Cstr(ProfileDoc.GetItemValue("BookBusyTime")(0)) &_
				"," & Cstr(ProfileDoc.GetItemValue("CurrentStatus")(0)) & "," & Cstr(db.Title)
				
				If outStr <> "" Then				
					Print #fileNum, outStr
				End If
				
				counter = counter + 1
			End If
		End If
		Set db = dbdir.GetNextDatabase
	Wend
	
	Close fileNum
	
ende:
'Schlussmeldung
	Print "Ueberpruefung beendet"
« Letzte Änderung: 01.04.11 - 09:42:41 von Driri »

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: OoO-Agenten Laufzeiten anzeigen lassen???
« Antwort #5 am: 01.04.11 - 09:46:33 »
If Left(db.FilePath,4) = "Verzeichnis" Then  

an dieser Bedingung bricht schon alles ab

Left(db.FilePath,4) sind die ersten 4 Zeichen des Dateipfades, und die können niemals "Verzeichnis" sein (denn das sind mehr als 4 Zeichen). Da Du ja MailDatenbanken durchsuchen willst, soll es wohl

If Left(db.FilePath,4) = "mail" Then

heißen. Ich würde dann auch noch ein Lcase verwenden

If Lcase (Left(db.FilePath,4)) = "mail" Then

EDIT: Und warum brichst Du bei mehr als 100 Datenbanken ab? Ist das nur zum Test?
« Letzte Änderung: 01.04.11 - 09:48:15 von Peter Klett »

Offline Norton

  • Senior Mitglied
  • ****
  • Beiträge: 409
  • Geschlecht: Männlich
  • Informationen schaden nur dem, der keine hat!
Re: OoO-Agenten Laufzeiten anzeigen lassen???
« Antwort #6 am: 01.04.11 - 11:47:08 »
Hallo zusammen,

erst einmal Danke für die Hilfe. Leider funktioniert es weiter nicht.

Folgenden Code verwende ich derzeit:

Dim session As New NotesSession
   Dim db As NotesDatabase
   Dim dbdir As New NotesDbDirectory("Verzeichnis")
   Dim ProfileDoc As NotesDocument
   Dim counter As Integer, fileNum As Integer
   Dim file As String, outStr As String
   
   file = "C:\export.csv"
   fileNum = Freefile()
   Open file For Output As fileNum
   
'Ueberpruefen der Datenbanken
   Print"Ueberpruefen der Out of Office"
   Set db = dbdir.GetFirstDatabase(DATABASE)
   While Not(db Is Nothing)
      If counter = 250 Goto ende
      If Lcase (Left(db.FilePath,5)) = "Verzeichnisname" Then   
         Set ProfileDoc=db.GetProfileDocument("OutOfOfficeProfile")
         
         If Not (ProfileDoc Is Nothing) Then
'Schreiben des Report
            outStr = Cstr(ProfileDoc.GetItemValue("FirstDayOut")(0)) & "," & Cstr(ProfileDoc.GetItemValue("FirstDayBack")(0)) &_
            "," & Cstr(ProfileDoc.GetItemValue("$TableCurrentStatus")(0)) & "," & Cstr(ProfileDoc.GetItemValue("BookBusyTime")(0)) &_
            "," & Cstr(ProfileDoc.GetItemValue("CurrentStatus")(0)) & "," & Cstr(db.Title)
            
            If outStr <> "" Then            
               Print #fileNum, outStr
            End If
            
            counter = counter + 1
         End If
      End If
      Set db = dbdir.GetNextDatabase
   Wend
   
   Close fileNum
   
ende:
'Schlussmeldung
   Print "Ueberpruefung beendet"


Die Verzeichnislänge wird berücksichtigt. Es erscheint nun die Fehlermeldung:

"Database Servername!!Verzeichnis\DBName.nsf has not been opened yet."

Gestartet mit einem User, der Managerrechte auf die Datenbanken hat. Noch eine Idee??

Gruß
Thomas
ca. 1700 User
11 Domino 9.0.X Server

Offline koehlerbv

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: OoO-Agenten Laufzeiten anzeigen lassen???
« Antwort #7 am: 01.04.11 - 12:04:01 »
Eine Deklaration ist noch nicht korrekt:

Set db = New NotesDatabase ("", "")

HTH,
Bernhard

Offline Norton

  • Senior Mitglied
  • ****
  • Beiträge: 409
  • Geschlecht: Männlich
  • Informationen schaden nur dem, der keine hat!
Re: OoO-Agenten Laufzeiten anzeigen lassen???
« Antwort #8 am: 01.04.11 - 12:15:49 »
Hallo Bernhard,

schon einmal danke. Ein paar wenige Fragen bleiben für mich noch offen. Normalerweise würde ich das ja unseren Entwickler fragen, deswegen sei bitte nicht so streng  ;) wenn ich das nun frage:

An welcher Stelle genau muss das eingetragen werden und soll der Befehl genauso lauten, oder muss in der Klammer noch etwas eingetragen werden?

Zuletzt noch, wofür steht HTH??? (Nachtrag: Hier hab ich Google bemüht - Hope this helps - Frage 3 erledigt)  :)

Gruß
Thomas
« Letzte Änderung: 01.04.11 - 12:20:25 von Norton »
ca. 1700 User
11 Domino 9.0.X Server

Offline koehlerbv

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: OoO-Agenten Laufzeiten anzeigen lassen???
« Antwort #9 am: 01.04.11 - 12:20:32 »
Ich habe Blödsinn geschrieben (obwohl ich ja mit "Deklaration" schon angefangen habe und prinzipiell dieser Code dann auch tut), ich meinte natürlich die geänderte Deklaration:

Dim db As New NotesDatabase ("", "").

Und auch die Angabe in Klammern ist so korrekt - Du erzwingst damit das Initialisieren des NotesDatabase-Objekts.

HTH = hope that helps.

In diesem Sinne,
Bernhard

Offline ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.697
  • Geschlecht: Männlich
Re: OoO-Agenten Laufzeiten anzeigen lassen???
« Antwort #10 am: 01.04.11 - 12:23:04 »
Hallo,

Ich dachte eigentlich immer, wenn ich eine Datenbank mit GetFirstDatabase hole (aus der Klasse NotesDbDirectory) ist diese noch nicht offen und ich muss diese erst noch explizit oeffnen, da lt. Hilfe die Datenbank mit dem angegebenen Befehl ja nicht geoeffnet wird.

Und die Fehlermeldung sagt dieses meines Erachtens ja auch aus
Zitat
Database Servername!!Verzeichnis\DBName.nsf has not been opened yet.


Andreas
« Letzte Änderung: 01.04.11 - 12:24:47 von ascabg »

Offline koehlerbv

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: OoO-Agenten Laufzeiten anzeigen lassen???
« Antwort #11 am: 01.04.11 - 12:28:33 »
Stimmt, das db.Open fehlt ja auch noch.

Bernhard

Offline Pyewacket

  • Senior Mitglied
  • ****
  • Beiträge: 310
  • Geschlecht: Männlich
Re: OoO-Agenten Laufzeiten anzeigen lassen???
« Antwort #12 am: 01.04.11 - 13:18:18 »
Ich hole mir beim Arbeiten mit NotesDbDirectory aus der DB nur Server- und Filename
und arbeite mit einem separat definierten DB-Objekt.
Wir haben die Erfahrung gemacht daß es beim direkten Arbeiten mit dem von dbdir.Getnextdatabase
gelieferten DB-Objekt zu Fehlern kommen kann wenn die Datenbank darüber geöffnet wird.
Vereinzelt kann es vorkommen daß Datenbanken ausgelassen werden bzw mehrfach zurückgegeben werden. Leider ist es uns nie gelungen das zu reproduzieren.

Gruss
 Peter
ATOS.org - Feel the music!

Offline koehlerbv

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: OoO-Agenten Laufzeiten anzeigen lassen???
« Antwort #13 am: 01.04.11 - 13:23:25 »
So ähnlich mache ich das auch, allerdings nicht mit einem separaten Objekt (das kann ja kaum anders sein als das DB-Objekt, dem ich gerade Server und FilePath abgepresst habe.

Code
	'Loop thorugh all databases in the Notes data directory:
	Set dbInProcess = dbdirComplete.GetFirstDatabase (DATABASE)
	While Not dbInProcess Is Nothing
		Call dbInProcess.Open (dbInProcess.Server, dbInProcess.FilePath)
		Set repInfo = .....................

Bernhard

Offline Norton

  • Senior Mitglied
  • ****
  • Beiträge: 409
  • Geschlecht: Männlich
  • Informationen schaden nur dem, der keine hat!
Re: OoO-Agenten Laufzeiten anzeigen lassen???
« Antwort #14 am: 04.04.11 - 10:55:17 »
Hallo zusammen,

erst einmal danke für die Antworten. Unsere entwicklungstechnischen Fähigkeiten waren dann nicht so gut wie erhofft. Heute morgen war unser Entwickler aber wieder da, hat diesen Thread gelesen und das Script mit den Hinweisen ruckzuck angepasst.

Hier ist das von uns verwendete Script, was hervorragend funktioniert, falls noch wer anders das mal brauchen sollte:

Sub Click(Source As Button)
   Dim session As New NotesSession
   Dim db As New NotesDatabase ("", "")
   Dim dbdir As New NotesDbDirectory("ServerName")
   Dim ProfileDoc As NotesDocument
   Dim counter As Integer, fileNum As Integer
   Dim file As String, outStr As String
   
   file = "C:\export.csv"
   fileNum = Freefile()
   Open file For Output As fileNum
   
'Ueberpruefen der Datenbanken
   Print"Ueberpruefen der Out of Office"
   Set db = dbdir.GetFirstDatabase(DATABASE)
   While Not(db Is Nothing)
      If counter = 999 Goto ende
      If Lcase (Left(db.FilePath,5)) = "Verzeichnis" Then   
         Call db.Open( "", "" )
         Set ProfileDoc=db.GetProfileDocument("OutOfOfficeProfile")
         
         If Not (ProfileDoc Is Nothing) Then
'Schreiben des Report
            outStr = Cstr(ProfileDoc.GetItemValue("FirstDayOut")(0)) & "," & Cstr(ProfileDoc.GetItemValue("FirstDayBack")(0)) &_
            "," & Cstr(ProfileDoc.GetItemValue("$TableCurrentStatus")(0)) & "," & Cstr(ProfileDoc.GetItemValue("BookBusyTime")(0)) &_
            "," & Cstr(ProfileDoc.GetItemValue("CurrentStatus")(0)) & "," & Cstr(db.Title)
            
            If outStr <> "" Then            
               Print #fileNum, outStr
            End If
            
            counter = counter + 1
         End If
      End If
      Set db = dbdir.GetNextDatabase
   Wend
   
   Close fileNum
   
ende:
'Schlussmeldung
   Print "Ueberpruefung beendet"
End Sub


Vielen Dank für die freundliche Unterstützung

Gruß
Thomas
ca. 1700 User
11 Domino 9.0.X Server

Offline Axel

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: OoO-Agenten Laufzeiten anzeigen lassen???
« Antwort #15 am: 04.04.11 - 11:02:30 »
... und was macht ihr bei mehr als 1000 Mail-Datenbanken?

Sub Click(Source As Button)
   Dim session As New NotesSession
   Dim db As New NotesDatabase ("", "")
   Dim dbdir As New NotesDbDirectory("ServerName")
   Dim ProfileDoc As NotesDocument
   Dim counter As Integer, fileNum As Integer
   Dim file As String, outStr As String
  
   file = "C:\export.csv"
   fileNum = Freefile()
   Open file For Output As fileNum
  
'Ueberpruefen der Datenbanken
   Print"Ueberpruefen der Out of Office"
   Set db = dbdir.GetFirstDatabase(DATABASE)
   While Not(db Is Nothing)
      If counter = 999 Goto ende
      If Lcase (Left(db.FilePath,5)) = "Verzeichnis" Then  
         Call db.Open( "", "" )
         Set ProfileDoc=db.GetProfileDocument("OutOfOfficeProfile")
        
         If Not (ProfileDoc Is Nothing) Then
'Schreiben des Report
            outStr = Cstr(ProfileDoc.GetItemValue("FirstDayOut")(0)) & "," & Cstr(ProfileDoc.GetItemValue("FirstDayBack")(0)) &_
            "," & Cstr(ProfileDoc.GetItemValue("$TableCurrentStatus")(0)) & "," & Cstr(ProfileDoc.GetItemValue("BookBusyTime")(0)) &_
            "," & Cstr(ProfileDoc.GetItemValue("CurrentStatus")(0)) & "," & Cstr(db.Title)
            
            If outStr <> "" Then            
               Print #fileNum, outStr
            End If
            
            counter = counter + 1
         End If
      End If
      Set db = dbdir.GetNextDatabase
   Wend
  
   Close fileNum
  
ende:
'Schlussmeldung
   Print "Ueberpruefung beendet"
End Sub


Ich denke so passt's eher.

Axel
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline Norton

  • Senior Mitglied
  • ****
  • Beiträge: 409
  • Geschlecht: Männlich
  • Informationen schaden nur dem, der keine hat!
Re: OoO-Agenten Laufzeiten anzeigen lassen???
« Antwort #16 am: 04.04.11 - 11:10:38 »
Hallo Axel,

danke für den Hinweis. Ich denke ich nehme die Anpassungen noch vor. Die 999 hatte ich selbst eingesetzt, da wir bei uns die Mail-Datenbanken in verschiedene Verzeichnisse aufgeteilt haben und maximal 500 Datenbanken pro Verzeichnis hinterlegt sind.

Ohne Counter machts sicherlich mehr Sinn.

Dankeschön.

Gruß
Thomas
ca. 1700 User
11 Domino 9.0.X Server

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz