Autor Thema: Konsolenkommandos mit LS  (Gelesen 3193 mal)

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.728
  • Geschlecht: Männlich
Konsolenkommandos mit LS
« am: 23.03.02 - 14:37:16 »
Ein bisschen API, ein bisschen LS und schon läßt sich jeder Konsolenbefehl über LS an den Server absetzen.
Hier einmal beispielhaft, wie man die aktuelle Zeit des (Domino) Servers ermittelt.

(wurde hier nach gefragt : Datum-Zeit vom Server ermitteln

http://www.atnotes.de/cgi-bin/yabb/YaBB.pl?board=002-2;action=display;num=1016878077;start=1 )

' diesen code in die DELARATION section kopieren

Declare Function NSFRemoteConsole Lib "NNotes.dll" Alias "NSFRemoteConsole" (Byval Server As String, Byval cmd As String, ret As Long) As Long
Declare Function OSLockObject Lib "NNotes.dll" Alias "OSLockObject" (Byval Handle) As String
Declare Sub OSUnlockObject Lib "NNotes.dll" Alias "OSUnlockObject" (Byval Handle)
Declare Sub OSMemFree Lib "NNotes.dll" Alias "OSMemFree" (Byval Handle)

Class remoteConsole
     Private IsError As Variant
     Private rc As Integer
     Private hBuffer As Long
     Private Server As String
     Private Command As String
     Private Result As String
     
     Sub New(inpServer As String)
           Dim server As New NotesSession
           If inpServer = "" Then
                 Me.IsError = True
           Else
                 Me.server=inpServer
                 Me.IsError = False
           End If
     End Sub
     
     Function Execute(inpCommand As String) As String
           If Me.Server = "" Then
                 Exit Function
           End If
           If inpCommand = "" Then
                 Me.execute="You must specify a command"
                 Me.iserror = True
                 Exit Function
           Else
                 Me.command = inpCommand
           End If
           
           Me.rc = NSFRemoteConsole(Me.server, Me.command, hBuffer)
           If Me.rc <> 0 Then
                 Me.iserror = True
                 Me.result="Error returned " & _
                 " from console [" & Cstr(rc) & "]"
           Else
                 Me.result = OSLockObject(hBuffer)
                 Call OSUnlockObject(hBuffer)
                 Call OSMemFree(hBuffer)
                 Me.Iserror = False
           End If
           Me.execute = Me.result
     End Function
End Class

' Diesen code in einen button oder procedure kopieren

Sub Click(Source As Button)
     Dim exec As String
     Dim dummy As Variant
     Dim remConsole As New RemoteConsole ( "comm1" ) ' hier den eigenen Server eintragen
     Exec = "sh stat Stats.Time.Current" ' welche Konsolenkommando ??
     If exec = "" Then
           Exit Sub
     Else
           dummy =  remConsole.Execute(exec) ' Kommandoo ausführen
           Msgbox dummy ' Rückgabewert steht in dummy
     End If
End Sub

Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline Performance

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.096
  • Geschlecht: Männlich
  • I love YaBB 1G - SP1!
warum einfach wenn es komplizierter geht ?
« Antwort #1 am: 25.03.02 - 18:04:34 »
Hi

Ich habe dieses Problem ganz anders gelöst(in Skript).
Dim db As NotesDatabase
Dim doc As NotesDocument
Dim erstellt As Variant
Set db = sess.currentdatabase

Set doc = db.createdocument
erstellt = doc.created

If db.Server = "" Then      
Msgbox Now() & " -> sie sind lokal - Client Zeit"
Else
Msgbox Now() & " -> Client Zeit & Chr(10) & erstellt & " -> Serverzeit auf dem " & db.Server
End If      


- das Dokument braucht man nur für die Zeitermittlung also es muss auch nicht gespeichert werden.
- Die Serverzeitermittlung ist echt ein Manko in Notes-könnte in die Database Klasse sehr gut reinpassen
- soll aber in RNext drin sein(habe ich gehört)


Gruss
« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »
Wir können alles außer hochdeutsch !

Alles ist möglich, es ist nur eine Frage der Zeit oder des Geldes!

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.728
  • Geschlecht: Männlich
Re: Konsolenkommandos mit LS
« Antwort #2 am: 25.03.02 - 18:13:58 »
Hallo Performance,

im Prinzip hast du Recht.
Nur leider ist es ein Unterschied, ob ein Dokument erstellt wird ( ServerZeit) oder ob ein Document bearbeitet wurde (ClientZeit).
Und da ist das Problem. Du kannst nicht davon ausgehen, sas alle Clients gleich "ticken".
Daher mein Vorschlag die Zeit von einer definierten Quelle zu holen.


Nachschlag:

Sorry, da habe ich nicht aufgepasst: Klar auch deine Methode funktioniert
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz